Stratégie "Une table par hiérarchie de classes"

Dans cette stratégie, la totalité de la hiérarchie de classes est mise en correspondance avec une table. Vous avez également la possibilité de définir des valeurs discriminantes pour chaque classe d'entité dans la hiérarchie en utilisant l'onglet EJB 3 Persistence de la feuille de propriétés de classe.

Option

Description

Valeur discriminante

Spécifie une valeur qui distingue cette classe des autres classes.

L'annotation Inheritance avec une stratégie SINGLE_TABLE est générée. L'annotation DiscriminatorColumn est générée pour définir la colonne discriminante. L'annotation DiscriminatorValue est générée pour spécifier la valeur de la colonne discriminante pour les entités du type donné si vous la spécifiez pour la classe.

Pour plus d'informations sur les correspondances, voir Modélisation des correspondances objet/relationnel (O/R).

@Entity(name="Shape")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name="shapeType", discriminatorType=DiscriminatorType.STRING, length=100)
@Table(name="Shape")
public class Shape { ... }

@Entity(name="Rectangle")
@Inheritance(strategy=InheritanceType.SINGLE_TABLE)
@DiscriminatorValue("Rectangle")
@Table(name="Shape")
public class Rectangle extends Shape { ... }

Une vérification de modèle est disponible pour s'assurer que les colonnes discriminantes sont correctement définies.