我需要知道hibernate什么时候完成了它的事务

时间:2010-11-11 15:44:46

标签: hibernate

我有一个使用postPersist和postUpdate注册了CallBackListener的实体。侦听器获取实体并将ID提交给执行进一步处理的JMS队列。消息提交和消费速度非常快,以至于它们是在原始会话完成交易之前发生的。

因此,MDB要么找不到实体,要么实体是陈旧的。我真正想要的是在使用消息之前让MDB检查以验证原始事务是否完整的方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用org.hibernate.InterceptorSessionFactory注册Session的实例,并在咨询{{afterTransactionCompletion(Transaction tx)方法后将消息发布到队列中1}}。在Transaction.wasCommitted方法中,您可能必须在某个全局threadlocal中访问实体的ID。