Bonjour, quelques sujets traitent de ce problème mais jamais avec la même raison.
Je suis débutant en hibernate et je tente de mettre en place une relation simple bidirectionnel en one-to-many.
J'ai donc une classe Status, et une classe StatusType
Status pointe vers un Status type. Je voudrais également pouvoir obtenir facilement la liste des Status lié à un StatusType donné.
J'ai mis ça en place avec les tests unitaire mais mon test retourne toujours 0 status lié.
Pour le code
Conf de Status
Pour la conf StatusType<class name="ImplementStatus" table="implementStatus">
<meta attribute="generated-class">com.cogis.esphynx.hibernate.model.base.ImplementStatus</meta>
<id name="id" column="id" type="long">
<generator class="increment"/>
</id>
<property name="label" type="string" not-null="true">
<meta attribute="field-description">Implement status label</meta>
<column name="label" length="255"/>
</property>
<many-to-one name="type" class="ImplementStatusType" column="type" not-null="false">
<meta attribute="field-description">The type on which this status is linked</meta>
</many-to-one>
</class>
Et mon test<class name="ImplementStatusType" table="implementStatusType">
<id name="id" column="id" type="long">
<generator class="increment"/>
</id>
<property name="label" type="string" not-null="true">
<meta attribute="field-description">Implement status type label</meta>
<column name="label" length="255"/>
</property>
<set name="status" lazy="true" inverse="true" cascade="save-update">
<key column="type"/>
<one-to-many class="ImplementStatus"/>
</set>
<set name="to" table="ImplementStatusTypeWorkFlow" inverse="true" lazy="true">
<key column="implementStatusType_from"/>
<many-to-many column="implementStatusType_to" class="ImplementStatusType"/>
</set>
</class>
Hé bien ça me sort 0 en résultat, au lieu du 3 attenduist1 = new ImplementStatusType("Type");
session.save(ist1);
is1 = new ImplementStatus("Status1", ist1);
session.save(is1);
is1 = new ImplementStatus("Status2", ist1);
session.save(is1);
is1 = new ImplementStatus("Status3", ist1);
session.save(is1);
session.flush();
System.out.println("Status liés ="+ist1.getStatus().size());
Pour moi la relation est simple:
- si j'ajoute un status lié à un type, alors ce status est disponible dans getStatus
- si j'ajoute un status dans la liste getStatus, alors dans l'objet status, je me retrouve mon type lié
Est ce que c'est bien ça la logique ? ai-je oublié quelquechose ?
Ha, et petit détail, mon set "to" du type marche quant à lui très bien...
Merci d'avance
Partager