Bonjour,
je suis en version 2.1.6 d'hibernate.
Mon souci est que j'ai une relation 1-1 entre 2 tables qui ont toutes les deux une composite key ().
Lot: idlot
1-n
Msg: idlot, idmsg
1-1
MsgAssocie: idlot, idmsg
et je ne sais pas comment specifier cela dans mes mappings afin que lorsque j'ajoute un MsgAssocié a mon Msg, il renseigne automatiquement les clés composés.
Avec une clé simple je vois bien comment faire mais en composé j'ai pas trouvé.
mes mappings sont:
<class name="Lot" table="Lot">
<id
name="id"
type="java.lang.Long"
column="ID"
>
<generator class="sequence">
<param name="sequence">seqtoto</param>
</generator>
</id>
<set
name="msg"
lazy="true"
inverse="true"
cascade="save-update"
>
<key>
<column name="IDLOT" />
</key>
<one-to-many
class="Msg"
/>
</set>
</class>
<class
name="Msg"
table="Msg"
>
<composite-id unsaved-value="any">
<key-many-to-one
name="lot"
class="Lot"
column="IDLOT"
/>
<key-property
name="idmsg"
column="IDMSG"
type="java.lang.Long"
length="10"
>
</key-property>
</composite-id>
<one-to-one
name="msgAssocie"
class="MsgAssocie"
outer-join="auto"
cascade="save-update"
>
</one-to-one>
</class>
<class
name="MsgAssocie"
table="MsgAssocie"
>
<composite-id unsaved-value="any">
<key-property
name="idlot"
column="IDLOT"
type="java.lang.Long"
length="10"
>
</key-property>
<key-property
name="idmsg"
column="IDMSG"
type="java.lang.Long"
length="10"
>
</key-property>
</composite-id>
<one-to-one
name="msg"
class="Msg"
outer-join="auto"
constrained="true"
>
</one-to-one>
</class>
quand je sauve mon objet, il me dit:
net.sf.hibernate.NonUniqueObjectException: a different object with the same identifier value was already associated with the session: MsgAssocie@4d2af2[idlot=<null>,idmsg=<null>], of class: MsgAssocie. Il ne renseigne pas les clés de mon objet MsgAssocié en fonction de Msg
est ce que quelqu'un saurait me renseigner. Merci d'avance.
Aurel.
|