Hibernate сохранить, чтобы получить последовательности во второй раз - PullRequest
1 голос
/ 22 августа 2009

У меня есть такой класс (с геттерами и сеттерами, все сопоставлены с hibernate, каждый с последовательностью в DB Oracle)

 public class A{
       private B b;
       private C c;
 }

Я создаю этот объект и сохраняю его в базе данных.

Итак, я создаю объект A, заполняю его объектом B и вызываю

saveOrUpdate(a)

чтобы я мог генерировать последовательности "a" и "b". затем я делаю некоторые вычисления и создаю экземпляр «C» и устанавливаю его в «a»

До этого все прекрасно работает. Теперь мне нужно получить идентификатор "c", поэтому я делаю некоторые проверки перед тем, как выполнить сброс и зафиксировать.

Но saveOrUpdate не будет работать здесь, потому что объект больше не является временным. В соответствии с документами гибернации на saveOrUpdate: «если объект уже сохраняется в этом сеансе, ничего не делать»

Есть идеи?

(не могу опубликовать код, потому что он слишком длинный и грязный, но в основном это так)

1 Ответ

0 голосов
/ 22 августа 2009

, если C является классом, отображаемым в режиме гибернации, и свойства правильно сопоставлены, то hibernate обнаружит, что свойство C изменилось, сохранит его для вас, когда сеанс сбрасывается или активная транзакция будет зафиксирована. Затем можно получить идентификатор C после коммита.

Другой подход - вызвать saveOrUpdate (c). В этом случае можно получить назначенный идентификатор, чтобы вы могли получить его.

Какие проверки вы делаете, что вам нужен идентификатор c?

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