Bonjour, j'ai un problème avec l'utilisation de l'héritage avec hibernate. J'utilise les annotations hibernate pour réaliser le mapping. Tout se passe bien au niveau du mapping mais j'ai des problèmes lors du chargement.
Je possède une table en base et j'ai donc réalisé une classe mère comportant les attributs communs et des classes filles comportant tout ce qui est spécifique. J'ai ensuite réalisé le mapping en utilisant pour la classe mère :
Au niveau des classes filles, j'ai réalisé le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 @Entity @Inheritance(strategy=InheritanceType.SINGLE_TABLE) @DiscriminatorColumn(name="idType", discriminatorType=DiscriminatorType.STRING) public class A{ ...... @ManyToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY) @JoinTable(name = "agregation", joinColumns = { @JoinColumn(name = "idPere")}, inverseJoinColumns = { @JoinColumn(name = "idFils")}) public Set<A> getFils() { return this.fils; } } ...
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Entity @DiscriminatorValue("R") public class B extends A{ ...... }
La tout va bien, le mapping se passe bien et je peux récupérer les objets à partir de la base.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 @Entity @DiscriminatorValue("V") public class C extends A{ ...... }
Par contre, le problème vient de l'association. Celle-ci fonctionne très bien lorsque je n'utilise pas l'héritage, par contre, depuis que j'ai mis en place l'héritage, si je récupère un objet de type B et que je fais un B.getFils() et que dans ces fils il y a un objet de type C, tout pète et j'ai l'exception suivante :
Exception in thread "main" org.hibernate.WrongClassException: Object with id: idFils = 1 was not of the specified subclass: essaijpa.A (Discriminator: R)
Si quelqu'un a la réponse ou connait une combine, je suis preneur, ca m'évitera un pétage de cable.
Merci
Partager