Comment configurer les annotations dans l'exemple de code suivant? Je voudrais coller uniquement avec les annotations JPA et éviter les dépendances spécifiques à Hibernate. Le code ci-dessous est-il correct?Classe abstraite héritée avec JPA (+ Hibernate)
@Entity
public class RefExample extends RefData {
}
(Il y aura plusieurs versions de ces classes, RefSomeOtherExample, etc, et une table db par classe. Certains peuvent ajouter des champs supplémentaires (colonnes), mais la plupart seront tout simplement utiliser des champs de base hérités de la "RefData" classe de base)
classe de base.
@Entity
public abstract class RefData {
private long id;
private String code;
private String desc;
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(unique = true, nullable = false)
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
@Column(unique = true, nullable = false, length=8)
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
@Column(unique = true, nullable = false, length=80)
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
}
en fin de compte, j'aimerais générer des scripts de création de schémas de cette classe en utilisant la SchemaExport de mise en veille prolongée. Dans le cas ci-dessus, ces deux classes ne devraient aboutir qu'à la création d'une seule table nommée "RefExample" avec les trois colonnes de "RefData". Est-ce que ça va marcher?
@Crusader Voir ici: http://stackoverflow.com/questions/2700680/table-per-subclass-inheritance-relationship-how-to-query-against-the-parent-clas/3017146#3017146 comment je contourne les problèmes de performance lorsqu'il s'agit de l'héritage. ** Si vous souhaitez utiliser la stratégie TABLE PAR CLASS, la base de données cible doit prendre en charge la stratégie de génération d'identité **. –
Pas encore sûr à 100% mais je pense que MappedSuperclass peut être ma meilleure option. Toutes ces tables sont vraiment pour est de stocker les valeurs présentées dans les champs déroulants qui sont affectés (un à plusieurs) aux enregistrements de données réelles. – Manius
Il est possible d'interroger (HQL ou JPQL) sur les propriétés présentes dans la superclasse annotée avec @MappedSuperclass – Sunil