2010-11-29 11 views
0

トランザクションで複数の操作を実行するメソッドがあります。操作のオンはMDBにメッセージを送信することです。私は春のフレームワークで冬眠を使用しています。トランザクションでHibernateセッションとMDBを使用して更新されたデータが更新されない

擬似コードは次のとおりです。私が取得するときに私が直面しています問題がある

onMessage(){ 

....

dao.find(someObjectID); 

} 

:私はちょうど上記updatedObjectを取得していますMDBで

@TransactionAttribute(TransactionAttributeType.REQUIRED) 
public someMethod{ 

dao.update(someObject); 

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

dao.doSomeThingMore(); 
} 

MDBのsomeObjectはsomeObjectの古い値を取得し、更新された値は取得しません! !!

私はMDBのすべてのメソッドを取り除き、someMethod()メソッドにまとめてみました。 私はさらに、dao.update()の後にflush()& clear()を使用しようとしましたが、それと同じ問題があります。

助けてください。

ありがとうございます。

+0

誰かがお勧めしますか?この問題は私を荒々しくしています。 – alex

答えて

0

ほとんどの場合、トランザクションキューセッションを作成する必要があります。

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

ここで注意パラメータは、セッションのトランザクションを行います。ここでは、確認パラメータを無視したい場合は-1のダミーパラメータを使用していますが、あらかじめ定義されたackモードを使用することもできます。

コールをトランザクションにする必要がある場合は、アプリケーションサーバーコンソールで設定できるトランザクション設定もあります。

関連する問題