-
Mapping Récursif ?
Bonjour,
j'ai un petit souci à Mapper une relation type Père-Fils.
Mon entite.xml :
<class name="com.prod.cy.catalogue.mapping.Node" table="catalogue"
dynamic-insert="true" dynamic-update="true">
<id name="_id" column="ID">
<generator class="native" />
</id>
<many-to-one name="_parent"
class="com.prod.cy.catalogue.mapping.Node" column="PARENT_ID"
not-null="false" />
<set name="_nodeEntries"
sort="com.prod.cy.catalogue.mapping.NodeComparator"
order-by="lower(name) asc" cascade="all" >
<key column="PARENT_ID" not-null="false" foreign-key="true" />
<one-to-many class="com.prod.cy.catalogue.mapping.Node" />
</set>
</class>
Ma classe contient une collection de nodeEntries, dont la clef étrangère est est la colonne PARENT_ID.
Chaque noeud contient une reference "parent" afin d'avoir une navigabilité dans les deux sens.
Le pb est le suivant : lorsque je flush ma session, la colonne PARENT_ID passe à null car la propriété n'est pas mappée puisque je la référence dans mon mapping comme key de mon set.
Je comprends pas prq Hibernate est capable d'instancier correctement les collections contenues dans les éléments mais n'est pas capable de mettre à jour le cas échéant la colonne PARENT_ID.
J'avais pensé mapper directement la propriété parentId (un int avec un getter et un setter) sur PARENT_ID, mais je perds la navigabilité, ce que je ne veux pas.
Si qqun a une idée, je suis preneur car je sèche :)
Merci à vous !
-
J'ai trouvé :)
En fait, c'était pas la peine de créer une instance de classe parent, il suffisait de créer une propriété parent_id et là, c'est tout bon, enfin, sauf que j'ai un nouveau souci : après toute modification des instance de "Node", il met la colonne PARENT_ID à null, alors que parentId dans ma classe Java a la bonne valeur avec un update.
J'ai mis updatable="false" dans le XML donc ca le fait plus, ms si j'ai un jour j'ai besoin, j'aurais le pb....