grails - 是否可以强制刷新保存在服务中的域?

标签 grails rabbitmq grails-domain-class grails-2.4 grails-services

在将域对象保存在服务中时,在域保存中带有flush: true,在必须使用该对象之前不会保存该对象。

Domain domain = new Domain(property: something.toString()).save(failOnError: true, flush: true)

我不确定如何在正在使用的任何服务中强制刷新休眠 session 。

在某些情况下,我正在对API服务进行API调用,该服务转到另一个我要保存域的服务,然后返回API服务,然后向RabbitMQ队列添加字符串,然后向用户返回200OK 。但是因为没有将域保存在第二个服务中,所以当将该项目添加到队列中时,rabbitMQ会在保存域之前处理该消息。

编辑:

我当前的修复:

API Controller :
def apiActionCreate()
{
   Map returnMap = apiService.createAction(params, request)
   rabbitSend staticQueue, [id: returnMap.id.toString()]
}

API服务:
Map createAction(GrailsParameterMap params, HttpServletRequest request)
{
   //do some logic related to a related domain
   seperateService.someAction(domain.id)
}

我要保存域的服务:
Map someAction(UUID id)
{
   Domain domain = new Domain(property: something.toString()).save(failOnError: true, flush: true)
}

最佳答案

您可以创建一个事务,该事务在完成时将保留到DDBB。

MyDomain.withTransaction{
        somecode()
}

关于grails - 是否可以强制刷新保存在服务中的域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33876560/

相关文章:

java - chalice /hibernate : No row with the given identifier exists

grails - 如何引导grails插件

ruby - 使用 Ruby Bunny gem 列出队列 RabbitMQ

grails - 如何在 Grails 中使用嵌入的 GORM 类?

macos - docker容器更改不保存,osx

rabbitmq - 有没有一种方法可以使用 RabbitMQ 以 100% 的交付保证来传输数据?

unit-testing - @TestFor 在域的单元测试中做什么?

Grails 在 createCriteria 中包含闭包

DFC 的 Grails 多环境配置问题

grails - 如何在数据库级别为一对多关联设置唯一性?