我正在尝试实施中找到的建议 这篇关于使用 MySQL 在 grails 中进行批处理的精彩博客文章. 。我遇到的问题是,在循环中包含对 session.clear() 的定期调用会导致抛出 org.hibernate.LazyInitializationException 。页面评论部分引用了一段话:

您关于潜在造成谎言的第二点是绝对正确的。如果您在使用当前线程导入以外的其他事情,则需要确保在完成清理后重新启动会话的任何对象。

但我该怎么做呢?任何人都可以帮助我具体了解如何“在完成清理后将任何对象重新附加到会话吗?”

我还对并行数据库插入过程感兴趣,以便我可以利用多核处理器。任何人都可以提供有关如何在 Grails 中执行此操作的建议吗?

有帮助吗?

解决方案

Grails 有一些方法可以帮助解决这个问题(它们在幕后利用 hibernate)。

如果您知道一个对象已分离,您可以使用 方法重新连接它。

如果您在分离对象时对其进行了更改,则可以使用 合并.

如果出于某种原因,您不确定对象是否附加到会话,您可以使用 链接文本 方法来确定它是或不是。

还可能值得查看 Hibernate 文档 会议.

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