Hibernate: не может удалить родительский объект в двунаправленной ассоциации - PullRequest
1 голос
/ 09 ноября 2011

У меня двунаправленная связь между двумя таблицами родительский и дочерний

<class name="child" table="child">
      <id name="id" column="id" />
      <many-to-one name="parent_id" column="parent_id" 
                          class="parent" cascade="save-update"/>
</class>

<class name="parent" table="parent">
     <id name="id" column="id" />
     <set name="children" inverse="true" cascade="delete" >
         <key column="parent_id" />
         <one-to-many class="child" />
     </set>
</class>

Я просто получаю SQLIntegrityConstraintViolationException при попытке удалитьthe parent.

Как сделать так, чтобы hibernate удалил для меня всех детей, связанных с родителем, при удалении этого родителя?

1 Ответ

1 голос
/ 10 ноября 2011

Вы можете удалить детей, используя опцию удаления сирот в вашем отображении. Это описано здесь . Это работает, потому что продолжительность жизни детей ограничена продолжительностью жизни родителей. Hibernate знает, что он должен удалить потомков, когда удаляет родителя, и поэтому избегает нарушения ограничения. То есть удаляет потомков, а потом родителя. Без этого вы можете ожидать нарушения закона.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...