Sto creando entità uguali per due tabelle diverse. Per fare mappature di tabelle, ecc. Diverse per le due entità, ma avere solo il resto del codice in un unico punto: una superclasse astratta. La cosa migliore sarebbe essere in grado di annotare elementi generici come i nomi di colonne (poiché saranno identici) nella super classe, ma questo non funziona perché le annotazioni JPA non sono ereditate da classi figlio. Ecco un esempio:È possibile aggiungere annotazioni JPA alle variabili di istanza di superclasse?
public abstract class MyAbstractEntity {
@Column(name="PROPERTY") //This will not be inherited and is therefore useless here
protected String property;
public String getProperty() {
return this.property;
}
//setters, hashCode, equals etc. methods
}
che vorrei di ereditare e specificare solo la roba specifici per i bambini, come le annotazioni:
@Entity
@Table(name="MY_ENTITY_TABLE")
public class MyEntity extends MyAbstractEntity {
//This will not work since this field does not override the super class field, thus the setters and getters break.
@Column(name="PROPERTY")
protected String property;
}
Tutte le idee o dovrò creare campi, getter e setter nelle classi bambino?
Grazie, Kris
(nit-picking) ha detto nulla di ibernazione, è vero? egli può utilizzare un diverso provider JPA. ma ovviamente il tuo ragionamento si applica comunque –
E in realtà sto usando l'ibernazione, ho semplicemente dimenticato di dirlo :) – Kristofer