在将域对象保存在服务中时,在域保存中带有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/