Grails:在异步任务中使用GORM保存领域模型

3
我是Grails 2.3.5上的一名开发者,正在使用gorm在任务块内保存数据。当我保存领域模型时,该任务会挂起。
以下是摘录内容:
task {
   def j = new Job()
   j.name = "test"
   j.save()

   println "saved !"  // never get here 
}

有没有关于如何在任务块中保存领域模型的想法?

谢谢 Luca


请提供更多上下文。有点难理解你在说什么。谢谢! - MeIr
验证错误可能吗?尝试 j.save(flush:true, failOnError:true)。我不建议在生产环境中使用它们,但它们可能有助于排除问题。 - Jarred Olson
2个回答

3
我在这里发布解决方案:
task {
    Job.withNewSession {
        def j = new Job()
        j.name = "test"
        j.save()
        ...
    }
}

2

尝试以下变体。 值得注意的是,异步线程和Hibernate会话需要注意一些微妙之处。请参见此部分在文献中了解更多。

Job.async.task {
   def j = new Job()
   j.name = "test
   j.save()
   ...
}

这个不起作用,但是你指引了我正确的方向。我发现 task {Job.withNewSession { 起到了关键作用...谢谢 - Luca

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接