Удалите дочерние объекты / записи в отношении «один ко многим», используя Hibernate - PullRequest
0 голосов
/ 05 декабря 2011

У меня есть отношения родитель-ребенок (один ко многим) между продуктом и пакетами.один продукт может иметь несколько пакетов.На моей странице jsp «Редактировать продукт» я разрешаю пользователю редактировать продукт и удалять / добавлять / редактировать любой пакет.Теперь, отправляя изменения, я делаю saveOrUpdate (product) в моем методе контроллера.Что я наблюдаю, так это то, что новые пакеты добавляются в БД, но те, которые были удалены пользователем, следовательно, не в пакетах Набор продуктов, не удаляются из БД.Мой фрагмент конфигурации Hiberate ниже.Я что-то здесь упускаю?

<hibernate-mapping>
    <class name="author.vo.ProductVO" table="Product">
    <id name="ProductID" type="long">
            <column name="Product_ID" />
            <generator class="increment" />
     </id>
    <set name="packages" inverse="true" cascade="all" lazy="false">
    <key column="Product_ID" not-null="true" on-delete="cascade"/>
    <one-to-many class="author.vo.PackageVO" />
     </set>

Код для добавления товара

@Autowired
private HibernateTemplate hibernateTemplate;

this.hibernateTemplate.saveOrUpdate(prod);

1 Ответ

0 голосов
/ 06 декабря 2011

Вы также должны добавить «cascade delete orphan» в свою конфигурацию xml, почему бы вам сначала не попробовать простую ситуацию.

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