-->
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.  [ 3 posts ] 
Author Message
 Post subject: double tentative de sauvegarde d'une relation n-n
PostPosted: Tue Jan 03, 2006 6:53 am 
Newbie

Joined: Tue Aug 23, 2005 12:05 pm
Posts: 7
Salut !
Je suis surpris par le comportement d'hibernate ; pourriez vous m'apporter des informations complémentaires sur mon épineux problème:

Je gère une relation n-n entre un objet wapiti et un objet lama.
Lama possède un attribut de type collection, contenant les Wapiti associés et inversemment.
le mapping est fait de la façon suivante:

dans Lama.hbm.xml
Code:
        <set
            name="wapitis"
            table="join_wapiti_lama"
            lazy="true"
            cascade="none"
            sort="unsorted"
        >
            <key
                column="lama_id"
            >
            </key>
            <many-to-many
                class="Wapiti"
                column="wapiti_id"
                outer-join="auto"
             />
        </set>

et dans wapiti.hbm.xml
Code:
        <set
            name="lamas"
            table="join_wapiti_lama"
            lazy="true"
            cascade="save-update"
            sort="unsorted"
        >
            <key
                column="wapiti_id"
            >
            </key>
            <many-to-many
                class="Lama"
                column="lama_id"
                outer-join="auto"
             />
        </set>


Ces 2 types d'objets sont rattachés à un objet de type Vue. Quand je sauve cet objet Vue, il essaie de sauver en cascade mes Wapitis et mes Lamas (ainsi que les lignes correspondantes de la table join_wapiti_lama).

j'obtiens alors l'erreur suivante:
Code:
Hibernate: insert into join_wapiti_lama (wapiti_id, lama_id) values (?, ?)
Hibernate: insert into join_wapiti_lama (lama_id, wapiti_id) values (?, ?)
WARN - net.sf.hibernate.util.JDBCExceptionReporter.logExceptions():57 - SQL Error: 1, SQLState: 23000
ERROR - net.sf.hibernate.util.JDBCExceptionReporter.logExceptions():58 - ORA-00001: unique constraint (SYS_C00262760) violated

la "unique constraint" faisant référence à la clé primaire (wapiti_id, lama_id) de la table de jointure.


Auriez vous une idée sur comment sauver tous ces objets sans qu'il y ait 2 tentative de sauver chaque relation wapiti-lama ?
Merci pour votre aide.
Hibernate version: 2.1

Name and version of the database you are using: Oracle 10g

The generated SQL (show_sql=true):
Hibernate: insert into join_wapiti_lama (wapiti_id, lama_id) values (?, ?) lorsqu'il essaie de sauver la relation à partir de Wapiti
Hibernate: insert into join_wapiti_lama (lama_id, wapiti_id) values (?, ?) lorsqu'il essaie de sauver la relation à partir de Lama


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 03, 2006 7:07 am 
Hibernate Team
Hibernate Team

Joined: Sun Sep 14, 2003 3:54 am
Posts: 7256
Location: Paris, France
Lis la doc de reference, la faq et le wiki sur inverse="true"
Le wiki a une page qui explique en détail cet attribut

_________________
Emmanuel


Top
 Profile  
 
 Post subject:
PostPosted: Tue Jan 03, 2006 8:47 am 
Newbie

Joined: Tue Aug 23, 2005 12:05 pm
Posts: 7
Et oui, je me suis fait avoir. 2 mots qui rappellent effectivement, dans la doc, qu'il faut mettre un attribut inverse="true" du côté de notre choix, et ça roule.
ça m'apprendra à vouloir aller trop vite :S

Merci quand même.


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

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.