在服务中保存域对象时,flush: true
在保存域时,在我必须使用该对象之前,该对象没有得到保存。
Domain domain = new Domain(property: something.toString()).save(failOnError: true, flush: true)
我不确定如何在我正在使用的任一服务中强制刷新休眠会话。
在某些情况下,我正在对 API 服务进行 API 调用,该服务转到另一个服务,我在其中保存域,然后返回 API 服务,然后将字符串添加到 RabbitMQ 队列,然后向用户返回 200OK . 但是因为域没有被保存在第二个服务中,所以当项目被添加到队列中时,rabbitMQ 在域被保存之前处理消息。
编辑:
我目前的修复:
API控制器:
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)
}