Mise en veille prolongée Pour un grand nombre Unidirectionnel Liste de cartographie
-
29-09-2019 - |
Question
J'ai relation one-to-many
entre le parent et l'enfant des objets Java. L'objet parent utilise java.util.List
qui stocke plusieurs objets enfants. Le problème que je fais l'expérience est mise à jour lorsque l'objet parent après avoir ajouté un ou plusieurs objet enfant (s) au List
dans le parent. J'utilise la méthode saveOrUpdate
pour sauver ou mettre à jour le parent. Il fonctionne très bien si je gardais une nouvelle instance du parent, mais après avoir sauvé, j'essaie d'ajouter objet enfant (s) dans la List
mère et de tenter ensuite appel saveOrUpdate
sur l'objet parent, mais aucune entrée d'objet enfant ( s) get dans la base de données persistant. Je voudrais juste quelques conseils. Remarque : Je n'utilise pas annotations.
Un extrait du Parent.hbm.xml , qui définit celui-à-plusieurs unidirectionnelle:
<list name="children" cascade="all">
<key column="parent_id"/>
<index column="idx"/>
<one-to-many class="Child"/>
</list>
La solution
Je viens d'essayer de reproduire cet exemple et cela a fonctionné bien pour moi.
Voici mes correspondances:
<hibernate-mapping package="com.example.domain">
<class name="com.example.domain.Parent" table="PARENT">
<id name="id" column="parent_id" access="field">
<generator class="increment" />
</id>
<property name="name" column="parent_name" access="field" />
<list name="children" access="field" cascade="all">
<key column="parent_id" not-null="true" />
<index column="idx" />
<one-to-many class="Child" />
</list>
</class>
</hibernate-mapping>
<hibernate-mapping package="com.example.domain">
<class name="com.example.domain.Child" table="CHILD">
<id name="id" column="child_id" access="field">
<generator class="increment" />
</id>
<property name="name" column="child_name" access="field" />
</class>
</hibernate-mapping>
I ajouté not-null="true"
à la cartographie parent.
Avez-vous essayé de show_sql
ensemble dans votre configuration de mise en veille prolongée pour voir le SQL généré?