これは長い質問であり、私が解決したいと思っている奇妙な問題です。クライアントがJSONオブジェクトをサーバーに投稿します。レポートを保存し、別の目的で生成されたIDをjmsで使用しますが、追加が成功したときにnullIDを取得することがあります。どうすればこれを防ぐことができますか?
私のドメインでは
int id
String reportImage
Date reportDateTime;
static constraints = {
id(blank:false, unique:true)
reportImage (blank:true, nullable:true)
reportDateTime (blank:false)
}
def afterInsert = {
id= this.id
}
私のコントローラーには、
JSONObject json = request.JSON
AddReportService svc = new AddReportService()
def id= svc.addReport(json)
json.put("id",id)
jmsService.send(queue:'msg.new', json.toString())
私のレポート追加サービスでは、
JSONObject obj = report
Reports reports = new Reports()
...
reports.save(flush:true)
myid = reports.id
return myid
私のjmsでは、
def jmsService
static transactional = false
static exposes = ['jms']
@Queue(name='msg.new')
def createMessage(msg) {
JSONObject json = new JSONObject(msg)
int id = json.get("id") // sometimes is null, but report was added. How to prevent?
AlertManagement am = new AlertManagement()
am.IsToSendAlert(id)