为什么 Grails Searchable Plugin 会导致 Hibernate AutoFlush 出现错误?
-
27-10-2019 - |
题
在里面 圣杯 1.2.5 我正在尝试解决的项目,我们使用 Grails 可搜索插件 .5.5.1.
问题是,每当我们尝试索引大型集合域类时,Grails 都会抛出:
错误的Hibernate.AsserTionFailure-发生断言失败(这可能表示Hibernate中的错误,但更有可能是由于会话不安全的可能性)org.hibernate.sertionfailure:Collection [域类]未通过Flush()处理
但所涉及的领域类已经被映射和使用 休眠 除了调用可搜索插件之外没有问题。
可搜索插件的使用如下:
- 创建罗盘会话
compass.openSession()
- 开始指南针交易:
compassSession.beginTransaction()
- 然后
compassSession.create(result.get(0))
在重要的未索引域类上调用 - 最后
compassTransaction.commit()
被调用来提交事务。 - 转到 2 并处理下一个域类
在第 3 个和第 4 个 Domain 类之间,会触发自动刷新并引发错误。
谁能给我任何关于如何解决这个问题的提示?
以前有人遇到过这个问题吗?
我知道他们有一个 .5 之前的版本中存在系统问题 的 可搜索插件。 这些问题有可能没有完全解决吗?
解决方案
本文 帮助我理解了它。您必须在具有脏对象的会话中执行一些 Hibernate 查询,并且它们会得到 flush()
-ed 在修改过程中。
有时,可以在发生任何修改之前将所有只读查询移至事务之外,并在 withTransaction{}
.
不隶属于 StackOverflow