Hibernate Однонаправленный картографический список один ко многим - PullRequest
2 голосов
/ 13 октября 2010

У меня one-to-many отношение между родительским и дочерним объектами Java.Родительский объект использует java.util.List, который хранит несколько дочерних объектов.Проблема, с которой я сталкиваюсь, заключается в обновлении родительского объекта после добавления одного или нескольких дочерних объектов к List в родительском объекте.Я использую метод saveOrUpdate для сохранения или обновления родительского элемента.Это прекрасно работает, если я сохраняю новый экземпляр родительского объекта, но после сохранения я пытаюсь добавить дочерний объект (ы) в родительский объект List, а затем пытаюсь вызвать saveOrUpdate для родительского объекта, но без записейдочернего объекта (ов) сохраняются в базе данных.Я просто хотел бы несколько указателей. Примечание : я не использую аннотации.
Фрагмент Parent.hbm.xml , который определяет однонаправленное отношение один-ко-многим:

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

1 Ответ

2 голосов
/ 14 октября 2010

Я только что попытался воспроизвести этот пример, и он работал нормально для меня.

Вот мои отображения:

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

Я добавил not-null="true" к родительскому отображению.

Вы пытались установить show_sql в своей конфигурации hibernate, чтобы увидеть сгенерированный SQL?

...