Mise en veille prolongée: Comment puis-je rejoindre 2 classes dans une table?
Question
Alors, je suis assez nouveau pour Hibernate et j'ai un problème.
J'ai une classe abstraite (la super-classe, classe Super), et 5 sous-classes qui doivent utiliser les propriétés de la classe super et ajouter une nouvelle propriété (une nouvelle colonne)
Alors, comment puis-je faire? Dois-je étendre la classe Super à partir de java, ou il suffit de rejoindre les classes en utilisant une annotation JPA.
Voici le deuxième problème. Comment puis-je avoir une table pour 2 classes. Quelqu'un (plus intelligent que moi) m'a dit d'utiliser la @JoinTable , mais former mes recherches avec Google, je pense que je dois utiliser @Inheritance (stratégie = InheritanceStrategy.JOINED)
Puis-je utiliser @JoinTable aussi?
Pas de solution correcte
Autres conseils
Le vôtre est un cas d'héritage:
- ajouter l'annotation
@Inheritance(stretegy=InheritanceStrategy.SINGLE_TABLE)
sur votreSuper
- ajouter l'annotation
@DiscriminatorColumn
(et la mise en ses attributsname
etdiscriminatorType
) (encore une fois sur leSuper
) - sur chaque sous-classe
extend
leSuper
, et ajoutez le@DiscriminatorValue
d'annotation, avec une valeur différente pour chacune des sous-classes.
Si vous êtes nouveau Mise en veille prolongée, vous devriez lire son . stratégies d'héritage sont expliqués et utiliser des annotations pour exprimer stratégie d'héritage est expliqué