在里面 圣杯 1.2.5 我正在尝试解决的项目,我们使用 Grails 可搜索插件 .5.5.1.

问题是,每当我们尝试索引大型集合域类时,Grails 都会抛出:

错误的Hibernate.AsserTionFailure-发生断言失败(这可能表示Hibernate中的错误,但更有可能是由于会话不安全的可能性)org.hibernate.sertionfailure:Collection [域类]未通过Flush()处理

但所涉及的领域类已经被映射和使用 休眠 除了调用可搜索插件之外没有问题。

可搜索插件的使用如下:

  1. 创建罗盘会话 compass.openSession()
  2. 开始指南针交易: compassSession.beginTransaction()
  3. 然后 compassSession.create(result.get(0)) 在重要的未索引域类上调用
  4. 最后 compassTransaction.commit() 被调用来提交事务。
  5. 转到 2 并处理下一个域类

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

谁能给我任何关于如何解决这个问题的提示?

以前有人遇到过这个问题吗?

我知道他们有一个 .5 之前的版本中存在系统问题可搜索插件。 这些问题有可能没有完全解决吗?

有帮助吗?

解决方案

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

有时,可以在发生任何修改之前将所有只读查询移至事务之外,并在 withTransaction{}.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top