Bon c'est un peu compliqué mon histoire et je vais essayer d'etre concis
J'ai définir un mapping d'héritage comme ceci
Ce qui me donne trois tables TFORMATION, TSESSION et TACTIVITE avec comme clés le FORMATION_ID. J'ai aussi un héritage de mes objets correctement générés vc hiberntate tools. Vous notterez que j'ai viré toutes les propriétés sauf ma relation vers CYCLE. Dans la table TSESSION j'ai donc un CYCLE_ID avec une foreign key vers ma table TCYCLE dont voila le mapping
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 <hibernate-mapping> <class name="...entities.TformationImpl" table="TFORMATION" schema="DB"> <id name="Id" type="java.lang.Long"> <column name="FORMATION_ID" precision="22" scale="0" /> <generator class="sequence"> <param name="sequence">SEQ_TFORMATION</param> </generator> </id> <discriminator column="FORMATION_TYPE" type="java.lang.String" length="1"/> ... <subclass name="...entities.TsessionImpl" discriminator-value="S"> <join table="TSESSION"> <key column="FORMATION_ID"/> <many-to-one name="cycle" lazy="false" class="...entities.TcycleImpl" cascade="evict" fetch="select"> <column name="CYCLE_ID" precision="22" scale="0" not-null="false" /> </many-to-one> </join> </subclass> <subclass name="....TactiviteImpl" discriminator-value="A"> <join table="TACTIVITE"> <key column="FORMATION_ID"/> .... </join> </subclass> </class> </hibernate-mapping>
Donc dans ce mapping je défini une relation inverse vers mon entité session.
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 <hibernate-mapping> <class name="...entities.TcycleImpl" table="TCYCLE" schema="DB"> <id name="Id" type="java.lang.Long"> <column name="CYCLE_ID" precision="22" scale="0" /> <generator class="sequence"> <param name="sequence">SEQ_CYCLE</param> </generator> </id> ... <set name="tsession" lazy="false" inverse="true" > <key> <column name="CYCLE_ID" precision="22" scale="0" not-null="true" /> </key> <one-to-many class="...entities.TsessionImpl" /> </set> </class> </hibernate-mapping>
Or le problème c'est lorsque j'execute mon code me permettant de rechecher ls cycles (je vous passe les détails je ne pense pas que cela soit important, peut etre me direz vous le contraire), hibernate (le c*n) me génère la requete suivante :
WTF? d'ou est-ce qu'il peut comprendre dans ce que je lui ai mis que mon CYCLE_ID se trouve dans la table TFORMATION, j'avoue etre à court d'idées (j'ai meme essayé d'allumer un cierge).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 select tsession0_.CYCLE_ID as CYCLE22_1_, ... from DB_GIRAF.TFORMATION tsession0_ inner join TSESSION tsession0_1_ on tsession0_.FORMATION_ID=tsession0_1_.FORMATION_ID where tsession0_.CYCLE_ID=?
Si vous avez une idée, a votre bon coeur messieurs dames.
@+
Julien
Partager