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>
Était-ce utile?

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é?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top