Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate/GORM:flush()未处理集合_Java_Hibernate_Grails_Gorm - Fatal编程技术网

Java Hibernate/GORM:flush()未处理集合

Java Hibernate/GORM:flush()未处理集合,java,hibernate,grails,gorm,Java,Hibernate,Grails,Gorm,我的Grails应用程序中有一个集成测试,当我试图保存类型为Member invitingMember.save(flush: true) 这会引发以下异常 org.hibernate.AssertionFailure: 收集 [com.mycompany.facet.facet.channels]是 未由位于的flush()处理 com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionSe

我的Grails应用程序中有一个集成测试,当我试图保存类型为
Member

invitingMember.save(flush: true)
这会引发以下异常

org.hibernate.AssertionFailure: 收集 [com.mycompany.facet.facet.channels]是 未由位于的flush()处理 com.mycompany.member.MemberConnectionService.addOrUpdateContact(MemberConnectionService.groovy:939)


在前面的事务中,我向
invitingMember
的集合属性添加了一个对象。我猜异常是在上面的一行抛出的,因为只有在这一点上,添加到集合中的对象才会被持久化。

潜在的问题可能是Hibernate没有级联保存。因此,当您刷新
成员时,Hibernate会注意到集合仍然脏(这可能不是您想要的)。因此,要么手动刷新集合,要么。

我唯一遇到异常的时候是在使用Hibernate事件时,例如beforeInsert、beforeUpdate等-您正在使用这些吗


JIRA中有一个与此相关的问题,已经在Grails1.2中修复了这个问题,我找到了一个可能的解决方案

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

我知道我说的是java,这里的问题是关于grails的,但也许grails也有同样的问题

不要犹豫编辑


这是我的问题(在java中)

当从集合中删除元素后,尝试向集合中添加元素时,我出现了该错误。在向集合添加新元素之前,我通过调用
save(flush:true)
解决了这个问题

  • 在我的例子中,集合总是从
    select
    返回

我非常确定,在使用GORM(Grails使用的ORM,构建在“Hibernate”之上)时,默认情况下会级联保存。