2008-12-05 3 views
1

Если у вас есть обычная сущность Foo и переадресация вызова (foo), @Id автоматически устанавливается на сущности. Однако, если указанная Foo сущность имеет коллекцию Bars привязанных к нему черезКак получить идентификатор объекта, сохраняемого с помощью каскада с JPA

(...) 
@OneToMany(cascade=Cascade.ALL) 
Set<Bar> getBars() 
(...) 

и такой экземпляр уже сохраняется, если один создает новую панель и добавить его в коллекцию Bars обув и вызовы слияния (foo) созданный Bar сохраняется, но его @Id не обновляется!

Есть ли способ получить этот идентификатор, не делая более поздний вызов для поиска (Foo.class, foo.getId())?

ответ

0

Вызов для объединения() не будет обновлять передаваемые объекты. Однако он возвратит обновленные объекты.

Из документов Hibernate:

http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate-saveorupdate.html

и слияния() сильно отличается:

  • , если существует постоянная экземпляра с тем же идентификатором в настоящее время связан с сессией, скопировать состояние данного объекта на постоянный экземпляр
  • Если в сеансе не существует постоянного экземпляра, попробуйте загрузить его из базы данных, o г создать новый постоянный экземпляр
  • упорная экземпляр возвращается
  • данный экземпляр не стали ассоциироваться с сессией, она остается отдельностоящий
+0

Так как я могу обновить эти объекты? – user43845 2008-12-06 19:09:44

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