2010-04-16 4 views
0

Я говорю об отдельном объекте, который позже я хочу обновить с помощью saveOrUpdate().Hibernate - как установить нулевое значение, чтобы каскадирование работало [интересно!]?

Как мы можем в то же время установить null и clear() ссылочную коллекцию?

А [1: 1] В [1: M], С

В до C ссылки может быть пустым, это означает, что записи № С для B.

теперь я хочу, чтобы иметь возможность в то же самое установленное B в нуль, чтобы все записи C были удалены из базы данных. И затем saveOrUpdate A!

Каскадирование настроено на спящий режим, включая удаление сироты.

Я B.clear(), она удалит все записи из C.

Я могу установить B в нуль, что будет установлено нулевое значение B, но C записи не будут удалены! (Какая жалость! Неудобно!)

как тогда?

Ситуация странная, на самом деле.

Я вижу обходное решение в 2 транзакции. Первый транс: очистить коллекцию. Зафиксировать транзакцию.

Теперь все записи C удалены.

Вторая сделка: A.setB (null). Commit. Это установит поле в NULL.

Но как это сделать за один шаг?

ответ

1

Можно использовать атрибут объединения аннотации Join или аналогичную вещь в xml

Смежные вопросы