如果有一个普通的Foo实体并且调用persist(foo),则会在该实体上自动设置@Id。 但是,如果所述Foo实体具有通过
绑定到它的Bars集合(...)
@OneToMany(cascade=Cascade.ALL)
Set<Bar> getBars()
(...)
并且这样的实例已经存在,如果创建一个新的Bar并将其添加到foo的Bars集合并调用merge(foo),那么刚创建的Bar会被保留,但它的@Id不会更新!
有没有办法检索这个id,而不需要稍后调用find(Foo.class,foo.getId())?
答案 0 :(得分:0)
对merge()的调用不会更新传入的对象。但是它将返回更新的对象。
来自Hibernate文档:
http://www.hibernate.org/hib_docs/v3/reference/en/html/objectstate-saveorupdate.html
和merge()非常不同: