更新的数据未在事务中使用Hibernate会话和MDB进行检索

时间:2010-11-29 22:20:34

标签: hibernate jms

我有一个在事务中执行多个操作的方法。操作正在向MDB发送消息。我正在使用带有spring框架的hibernate。

伪代码是:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public someMethod{  

dao.update(someObject);  

sendToMDB(someObjectID);    << sending ID of above updated object

dao.doSomeThingMore();
}

在MDB中,我只是获取上面的updatedObject:

onMessage(){

....

dao.find(someObjectID);

}

我面临的问题是当我在MDB中检索someObject时,它检索someObject的旧值而不是更新的值!!!

我试图删除MDB中的所有方法并将所有方法放在方法someMethod()中,并且它可以正常工作。 我甚至尝试过使用flush()和amp;在dao.update()之后清除()但仍然是同样的问题。

请帮忙。

提前致谢。

1 个答案:

答案 0 :(得分:0)

很可能您需要创建事务性队列会话。

QueueSession createQueueSession(
        QueueConnection qu
    ) throws JMSException {
    return qu.createQueueSession(true, -1);
}

请注意, true 参数会使会话成为事务。这里-1只是虚拟参数,当你想忽略确认参数时,你可以使用预定义的ack模式。

如果需要进行事务性调用,也可以在应用程序服务器控制台中设置一些事务性配置。