【问题标题】:Updated data not retrieving with Hibernate session and MDB in a transaction在事务中未使用 Hibernate 会话和 MDB 检索更新的数据
【发布时间】:2010-12-07 04:14:20
【问题描述】:

我有一个在事务中执行多个操作的方法。操作之一是向 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() 中,它工作得很好。 我什至尝试在 dao.update() 之后使用 flush() 和 clear() 但仍然是同样的问题。

请帮忙。

提前致谢。

【问题讨论】:

  • 有人可以建议。这个问题让我很抓狂。

标签: hibernate jms


【解决方案1】:

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

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

注意这里的 true 参数将使会话具有事务性。这里 -1 只是当您想忽略确认参数时的虚拟参数,但是您可以使用预定义的确认模式。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 2011-07-13
    • 2014-09-06
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多