Grails 3:无法从JMS队列中保存实体

时间:2016-07-27 16:32:31

标签: hibernate grails apache-camel jms grails-3.1

我正在使用JMS插件' org.grails.plugins:jms:2.0.0.M1'在我的grails 3.1项目中。我使用jmsService在队列中放了一条消息:

jmsService.send("msgPending", [eventType: it.msgEventType.toString(), msgEvent: messageXml]) 
{ 
   Message msg ->
   msg.setJMSDeliveryMode(DeliveryMode.PERSISTENT)
   msg.setJMSExpiration(queueTimeout)
}

使用已配置的驼峰路由消耗此消息,该路由在同一个类中具有端点方法,并将其置于该路径上。

收到消息后,我尝试使用数据保存实体,但我得到以下异常:

找不到当前线程的会话;嵌套异常是org.hibernate。

我尝试用Entity.withTransaction包装save方法,我也用@Transactional注释了类和方法,但仍然看到同样的问题。

有没有人对此有任何疑问?

由于

1 个答案:

答案 0 :(得分:0)

通过强制刷新实体的存储,即entity.save(flush:true),不再出现错误并且实体保存正确。

当我检查是否有一个hibernate会话附加到实体而没有刷新保存时,我可以看到有。我不知道为什么我必须强制冲洗,但它现在正在工作。