Persistence transitive (cascade) d'une relation many to one
Salut,
J'ai besoin d'aide sur une relation bidirectionnelle many-to-one qui ne fonctionne pas.
J'ai une classe Guide qui a une liste de Straps.
Une classe Strap qui a un Guide.
Voici mes deux fichiers de mapping allégés:
Guide.hbm.xml
Code:
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
|
<class name="Guide" table="GUIDE">
<id name="id" column="GUIDE_ID">
<generator class="sequence"/>
</id>
<property name="boxcode"/>
<property name="comments"/>
<property name="nc"/>
<list name="straps" inverse="true" lazy="false" cascade="persist,merge,save-update,delete-orphan">
<key column="GUIDE_ID"/>
<index column="index"/>
<one-to-many class="Strap"/>
</list>
<list name="collars" inverse="true" lazy="false" cascade="persist,merge,save-update">
<key column="GUIDE_ID" />
<index column="index"/>
<one-to-many class="Collar"/>
</list>
</class> |
Strap.hbm.xml
Code:
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 31 32 33 34 35 36
|
<class name="Strap" table="STRAP">
<id name="id" column="STRAP_ID">
<generator class="sequence"/>
</id>
<property name="name" column="NAME" unique="false"/>
<many-to-one name="setupAuthor" class="Author"
lazy="false"
column="SETUP_AUTHOR_ID"
unique="false"
not-null="false"/>
<many-to-one name="unsetupAuthor" class="Author"
lazy="false"
column="UNSETUP_AUTHOR_ID"
unique="false"
not-null="false"/>
<many-to-one name="validationAuthor" class="Author"
lazy="false"
column="VALIDATION_AUTHOR_ID"
unique="false"
not-null="false"/>
<many-to-one name="guide"
insert="false"
update="false"
lazy="false"
column="GUIDE_ID"
not-null="false"/>
</class> |
Dans mon code je fais :
Code:
1 2 3 4 5 6 7 8 9
|
Strap strap = new Strap();
Guide guide = new Guide();
strap.setGuide(guide);
guide.addStrap(strap);
GuideManager.save(guide) |
Et je sauvegarde en faisant dans ma classe GuideManager
Code:
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
|
public static void save(Guide guide) {
Session session = HibernateUtil.getSessionFactory().openSession();
Transaction tx = null;
try {
tx = session.beginTransaction();
session.save(guide);
tx.commit();
}catch (HibernateException e){
OuateLogger.logError("Pb lors de la création du guide "+guide.getBoxcode());
OuateLogger.logError(e.getMessage());
e.printStackTrace();
}finally {
session.close();
} |
Mon problème est que mes Straps et mes guides sont bien sauvegardés MAIS AVEC AUCUN LIEN ENTRE EUX!!
C'est à dire que dans ma table strap, pour un strap donné, l'id du guide associé est null!
PLEASE HELP!