Hibernate/GORM:flush()不处理集合

Dón*_*nal 14 java grails hibernate grails-orm

我在Grails应用程序中进行了集成测试,当我尝试保存类型的实体时失败 Member

invitingMember.save(flush: true)
Run Code Online (Sandbox Code Playgroud)

这引发了以下异常

org.hibernate.AssertionFailure:在com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)中,flush()未处理集合[com.mycompany.facet.Facet.channels].

在事务的早期,我将一个对象添加到集合属性中invitingMember.我的猜测是异常在上面的行中抛出,因为只有在这一点上才会保留添加到集合中的对象.

Aar*_*lla 8

潜在的问题可能是Hibernate没有级联保存.所以当你刷新时Member,Hibernate注意到集合仍然是脏的(这可能不是你想要的).因此要么手动刷新集合,要么告诉Hibernate级联所有更新.


unl*_*udo 5

在这里找到了一个可能的解决方案。

实际上,查看 toString、equals、hashcode 并确保您没有访问惰性访问器。

我知道我正在谈论 java,这里的问题是关于 grails,但也许 grails 也有同样的事情。

不要犹豫编辑。

这对我来说是个问题(用java)