我有一项服务可以将任务分配给运营商。 在方法内部,我在循环内及时分发了许多任务。我想刷新任务,操作员和DistributionLog。如果我只有一个域名可以保存,我想我可以做一些像
这样的事情Operator.withTransaction{ //...some code }
但我至少要保存3个域名并使其更糟糕,其中两个域名彼此依赖。操作员有一个任务列表。
在操作员完成任务之前,我不能等待所有的分配完成,因此我必须强制它进行冲洗。为了使它更难,它都在multitenantService.doWithTenant()(多租户插件)中
答案 0 :(得分:2)
您可以使用所有域类中提供的withSession
方法获取会话,并在其上调用flush()
。
Operator.withSession { session ->
// ...
session.flush()
}
答案 1 :(得分:1)
你可以使用flush
参数强制刷新到save
的最后一次调用:
obj.save flush:true
答案 2 :(得分:0)
参见文档:
http://grails.github.io/grails-doc/2.2.5/ref/Domain%20Classes/save.html
The save method informs the persistence context that an instance should be saved or updated. The object will not be persisted immediately unless the flush argument is used:
b.save(flush: true)
答案 3 :(得分:0)
如果要进行显式刷新,可以在grails服务中获得对hibernate会话工厂的引用,如下所示:
def sessionFactory
然后,您可以获取当前的休眠会话,并在其上调用flush:
sessionFactory.currentSession.flush()