спящий сохранить ассоциации - PullRequest
4 голосов
/ 04 ноября 2011

Иерархия следующая: родительский объект связан с дочерним объектом.Я создаю новый родительский объект и хочу связать его с дочерним объектом, который уже хранится в базе данных, и сохранить родительский объект в базе данных.Один из способов сделать это - предварительно загрузить Child и связать его с Parent.Но могу ли я создать новый дочерний объект, установить его идентификатор и связать его с родителем, поэтому при сохранении родительского объекта hibernate автоматически найдет соответствующего дочернего объекта и заполнит пропущенные дочерние поля, для которых изначально установлено значение null?

Спасибо.

1 Ответ

6 голосов
/ 04 ноября 2011

Нет.Вы должны получить ребенка из базы данных.Но если вы используете session.load вместо session.get, он просто инициализирует прокси для фактического постоянного объекта, даже не выполняя SQL-запрос.Конечно, если сущность на самом деле не существует в базе данных, у вас будет исключение во время сброса (или если сущность выбирается какой-то другой частью кода позже в транзакции).

Child child = session.load(Child.class, idOfChild); // no SQL query here
Parent p = new Parent();
p.setChild(child);
session.persist(p);
...