Hibernate. 2 функции: simpleSave (), saveWithCascade (). это можно сделать? и как? - PullRequest
1 голос
/ 20 мая 2010

У меня есть сценарий, в котором у меня есть: Родительский класс Parent, который имеет несколько простых свойств (int, String и т. Д.) И 2 набора дочерних элементов. Установить детей A; Набор детей B;

Могу ли я создать функцию сохранения для parent simpleSave (Parent p), которая будет сохранять / сохранять только родительские свойства в базе данных и иметь функцию saveWithCascade (Parent p), которая будет каскадно обращаться к его дочерним элементам?

позже отредактируйте: под Сохранить я имею в виду Обновление. Потому что, если я знаю, что изменилось только свойство или набор, я не хочу, чтобы hibernate делал множество выборок для других, просто чтобы проверить, изменились ли они

Ответы [ 2 ]

0 голосов
/ 21 мая 2010

Если вы сконфигурируете Hibernate для каскадирования определенной операции для данной ассоциации, вы не сможете отключить ее. Таким образом, единственное, чего вы хотите добиться, - это не каскадировать PERSIST и MERGE, а делать все вручную, используя метод saveWithCascade().

0 голосов
/ 21 мая 2010

Да, вы можете. Предполагая, что ваши отображения спящего режима определены правильно. Вы можете позвонить session.save(Parent)

Когда вы спасаете ребенка, вы можете сделать что-то подобное в своем методе

Parent p = new Parent();
Child c = new Child();
p.addChild(c);
session.save(p);
session.flush();
session.save(c);
session.flush();

Главное, чтобы ребенок руководил отношениями. Вы можете сделать это, установив inverse = "true"

...