如何在 Grails GORM 中强制刷新

use*_*328 3 grails transactions flush

我有一项将任务分配给操作员的服务。在方法内部,我在循环内及时分配许多任务。我想刷新任务、操作员和 DistributionLog。如果我只需要保存一个域名,我想我可以做类似的事情

Operator.withTransaction{ //...some code }
Run Code Online (Sandbox Code Playgroud)

但我至少有 3 个域需要保存,更糟糕的是,其中两个域相互依赖。操作员有一个任务列表。

我迫不及待地等待所有分配完成,然后操作员才能获得他的任务,所以我必须强制它刷新。更难的是,这一切都在 multitenantService.doWithTenant() (多租户插件)中

小智 6

withSession您可以使用所有域类中可用的方法获取会话并flush()调用它。

Operator.withSession { session ->
   // ...
   session.flush()
}
Run Code Online (Sandbox Code Playgroud)