在我要解决的Grails 1.2.5项目中,我们使用Grails Searchable plugin .5.5.1。
问题在于,每当我们尝试索引大型集域类时,Grails都会不断抛出:
ERROR hibernate.AssertionFailure - an assertion failure occured (this may indicate a bug in Hibernate, but is more likely due to unsafe use of the session) org.hibernate.AssertionFailure: collection [domain-class] was not processed by flush()
但是,所涉及的域类已由hibernate映射和使用,而在可搜索插件的调用之外没有任何问题。
可搜索插件的用法如下:
compass.openSession()
创建指南针 session compassSession.beginTransaction()
compassSession.create(result.get(0))
compassTransaction.commit()
提交事务。 在第3个和第4个Domain类之间,将触发自动刷新,并引发错误。
谁能给我有关如何解决此问题的任何提示?
以前有人遇到过此问题吗?
我知道他们有一个 searchable-plugin的systemic issue with this back in pre .5 versions。 是否可能未完全解决这些问题?
最佳答案
This article帮助我理解了它。您必须在具有脏对象的 session 中进行一些Hibernate查询,并且在修改过程中它们会得到flush()
-ed。
有时,有可能在进行任何修改之前将所有只读查询移出事务,并在withTransaction{}
中进行修改。
关于hibernate - 为什么Grails可搜索插件在Hibernate AutoFlush上导致错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5353564/