在我要解决的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()提交事务。
  • 转到2并处理下一个域类

  • 在第3个和第4个Domain类之间,将触发自动刷新,并引发错误。

    谁能给我有关如何解决此问题的任何提示?

    以前有人遇到过此问题吗?

    我知道他们有一个 searchable-plugin的systemic issue with this back in pre .5 versions是否可能未完全解决这些问题?

    请您参考如下方法:

    This article帮助我理解了它。您必须在具有脏对象的 session 中进行一些Hibernate查询,并且在修改过程中它们会得到flush() -ed。

    有时,有可能在进行任何修改之前将所有只读查询移出事务,并在withTransaction{}中进行修改。


    评论关闭
    IT序号网

    微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!