有些东西没有被冲走。正在发生的事情的简化示例:
def testDemo() {
def person = new Person(...)
person.save(flush: true)
println "Number of people after save: " + Person.all.size()
def dummyList = [1, 2, 3, 4, 5]
GParsPool.withPool { num ->
println "Number of people after withPool: " + Person.all.size()
dummyList.eachParallel {
println "Number of people after eachParallel " + Person.all.size()
Person.withTransaction {
...
这输出:
Number of people after save: 1
Number of people after withPool: 1
Number of people after eachParallel: 0
我不明白我是否必须对会话和事务执行某些操作才能使数据持久存在,或者这是否是 GPars 中的错误。在底层休眠级别发生了什么?
我希望最近创建的 Person 在并行闭包中可见。
Gpars 是一个多线程工具,注入域类中的休眠会话不是线程安全的。
尝试使用这些方法或直接调用 SessionFactory:
请注意,为每个线程打开一个会话的成本可能非常高,并且可能会用新连接淹没您的数据库。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)