Frage

Ich habe one-to-many Beziehung zwischen Eltern und Kind Java-Objekten. Die übergeordnete Objekt Verwendungen java.util.List dass speichert mehrere untergeordnete Objekte. Das Problem, das ich erlebt habe ist, wenn das Objekt übergeordnete Aktualisierung nachdem ich ein oder mehrere untergeordnete Objekt (e) an die List in der übergeordneten hinzugefügt. Ich bin mit der saveOrUpdate Methode zu speichern oder die Eltern zu aktualisieren. Es funktioniert gut, wenn ich eine neue Instanz der Eltern speichere, aber nach dem Speichern, ich versuche Kind Objekt (e) in die Mutter List hinzufügen und dann auf das übergeordnete Objekt zu Anruf saveOrUpdate versuchen, aber keine Einträge von Kind-Objekt ( e) get beibehaltenen in die Datenbank. Ich möchte nur einige Hinweise mögen. Hinweis : Ich bin nicht Annotationen verwenden.
Ein Ausschnitt aus der Parent.hbm.xml , das definiert, die eine Eins-zu-viele unidirektionale Beziehung:

  <list name="children" cascade="all">
     <key column="parent_id"/>
     <index column="idx"/>
     <one-to-many class="Child"/>
  </list>
War es hilfreich?

Lösung

Ich habe gerade versucht, dieses Beispiel zu reproduzieren und es funktionierte OK für mich.

Hier sind meine Zuordnungen:

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

Ich habe not-null="true" auf die übergeordneten Zuordnung.

Haben Sie versucht zu Satz show_sql in Ihrem Hibernate Config generierten SQL zu sehen?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top