Stiamo sviluppando un'applicazione collegata a un database precedente. Questo è molto "non tipizzato", usando stringhe per quasi tutti i dati. Quel che è peggio è che è lontano dall'essere omogeneo: usa diversi pattern per date o ore ('YYDDMM', 'HHMMSS', millisecondi) e booleani ('Y'/'N', 'X'/''), per esempio.JPA: istanze parametrizzate di AttributeConverter
Vogliamo utilizzare JPA (EclipseLink) e convertitori personalizzati. Il problema è che @Convert
si aspetta una classe che implementa AttributeConverter
, quindi dobbiamo fare nuove classi per ogni modello. Quello che mi piacerebbe è una classe BooleanConverter, che può essere istanziata con i valori 'Y'/'N' o 'X'/''.
Questo è ovviamente fuori specifica JPA, ma forse è possibile utilizzare annotazioni/configurazione di EclipseLink. Osservando la sua annotazione @Convert, è possibile specificare un convertitore per nome. Questo suona bene a me se possibile registrare un ynBooleanConverter
e xSpaceBooleanConverter
:
// Unfortunately, this method does not exist :(
Session.addConverter('ynBooleanConverter', new BooleanConverter("Y", "N"));
@Entity
public class MyEntity {
@Convert("ynBooleanConverter")
private Boolean myBoolean;
...
}
E 'possibile? Quali altre opzioni abbiamo?
è adatto per l'uso del convertitore JPA 2.1? disponibile da eclipselink versione 2.5? –
Posso usare l'ultima versione di EclipseLink, ma non riesco a vedere come risolverlo. – sinuhepop