-->
These old forums are deprecated now and set to read-only. We are waiting for you on our new forums!
More modern, Discourse-based and with GitHub/Google/Twitter authentication built-in.

All times are UTC - 5 hours [ DST ]



Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 
Author Message
 Post subject: Relation inverse vers Mapping avec héritage
PostPosted: Wed Mar 18, 2009 1:14 am 
Newbie

Joined: Wed Mar 18, 2009 1:12 am
Posts: 1
Bon c'est un peu compliqué mon histoire et je vais essayer d'etre concis

J'ai défini un mapping d'héritage comme ceci

Code:
<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>


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:
<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>


Donc dans ce mapping je défini une relation inverse vers mon entité session.

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 :

Code:
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=?


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).

Si vous avez une idée, a votre bon coeur messieurs dames.

@+
Julien


Top
 Profile  
 
Display posts from previous:  Sort by  
Forum locked This topic is locked, you cannot edit posts or make further replies.  [ 1 post ] 

All times are UTC - 5 hours [ DST ]


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum

Search for:
© Copyright 2014, Red Hat Inc. All rights reserved. JBoss and Hibernate are registered trademarks and servicemarks of Red Hat, Inc.