Обновлены данные, не получаемые с помощью сеанса Hibernate и MDB в транзакции - PullRequest
0 голосов
/ 30 ноября 2010

У меня есть метод, который выполняет несколько операций в транзакции. Операция отправляет сообщение в MDB. Я использую Hibernate с рамкой весны.

Псевдокод:

@TransactionAttribute(TransactionAttributeType.REQUIRED)
public someMethod{  

dao.update(someObject);  

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

dao.doSomeThingMore();
}

В MDB я просто загружаю выше обновленный объект:

onMessage(){

....

dao.find(someObjectID);

}

Проблема, с которой я сталкиваюсь, заключается в том, что когда я получаю someObject в MDB, он возвращает старые значения someObject, а не обновленные !!!

Я попытался убрать все методы в MDB и собрать все вместе в методе someMethod (), и все работает нормально. Я даже пытался использовать flush () и clear () после dao.update (), но все еще проблема.

Пожалуйста, помогите.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 декабря 2010

Скорее всего, вам нужно создать сеанс транзакционной очереди.

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

Обратите внимание, здесь true параметр сделает сеанс транзакционным.Здесь -1 просто фиктивный параметр, если вы хотите игнорировать параметр подтверждения, хотя вы можете использовать предопределенные режимы подтверждения.

Также могут быть некоторые транзакционные конфигурации, которые вы можете установить в консоли сервера приложений, если это необходимо для выполнения транзакционных вызовов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...