Bonjour,
j'ai une problématique que je n'ai pas réussi à trouver sur le forum ou dans les faq (et pas plus dans la doc officiel d'hibernate).
J'ai une table Toto, j'ai un objet A (avec A.hbm.xml) qui est le mapping.
J'ai une classe B qui étend A (avec B.hbm.xml).
Le fichier de mapping A.hbm.xml et B.hbm.xml sont identique à l'exception de la classe configuré de dans et d'une configuration sur un champ (update = "false" insert = "false").
Le mapping de A
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 public class A { } public class B extends A { }
Le mapping de B
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
21
22
23
24
25
26
27
28
29
30 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > <hibernate-mapping> <class name="A" table="Toto" lazy="true" > <meta attribute="class-description" > @hibernate.class table="Toto" </meta> <property name="monchamp" type="java.lang.Integer" not-null="true"> <meta attribute="field-description"> @hibernate.property column="MONCHAMP" length="8" </meta> <column name="MONCHAMP" sql-type="NUMBER(8)" not-null="true" /> </property> ...
Lorsque je recherche un objet B, il me retourne le double de ligne car il me retourne un objet A et B.
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
21
22
23
24
25
26
27
28
29
30 <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 2.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd" > <hibernate-mapping> <class name="B" table="Toto" lazy="true" > <meta attribute="class-description" > @hibernate.class table="Toto" </meta> <property name="monchamp" type="java.lang.Integer" not-null="true" update = "false" insert = "false"> <meta attribute="field-description"> @hibernate.property column="MONCHAMP" length="8" </meta> <column name="MONCHAMP" sql-type="NUMBER(8)" not-null="true" /> </property> ...
Et c'est cette situation que je voudrais résoudre.
J'ai cherché du coté <sub-class> <joined-class> mais le problème, c'est que je n'ai pas de discriminant.
Le système peut vous paraître étrange, mais je dois faire avec l'existant. Il a été mis en place pour empêcher le champ d'être mis à jour dans certain cas (c'est un peu étrange comme méthode...)
Existe-t-il une possibilité de résoudre le problème ?
Pour l'instant, si je créer 2 classes, sans héritage, ça fonctionne.
Merci
Partager