拡張永続コンテキストを使用しています。これは、オブジェクトに1対多の関係をゆっくりとロードすることができ、SELECTを必要としないためです。永続コンテキストを持つオブジェクト。JPA/Hibernateクエリが古い結果を返す
私はとDummyObject持っている:
A "最終更新日" の日付フィールドを
このオブジェクトはすべての更新されている
1対多リレーションシップ秒を1つのJVMでem.merge(DummyObject)
呼び出しで取得します。別のJVMで
は、私はまた、このクエリごと秒をやって、次の
em.createQuery("from DummyObject").getResultList();
のような呼び出しを行うDummyObjectを問い合わせます。
問題は、Hibernateが正しいSQL文(私は文がログオンしているとき)を生成しているにもかかわらず、連続した呼び出しの後に最初のQueryのタイムスタンプを持つことです。アップデートを正しく取得しています(私は確認済みです)。
@Versionを使用してあらゆる種類のオプティミスティックロックを無駄にしようとしました。
は私が(TRANSACTIONALに は私を遅延 ONE-多くをロードすることはできません何かをPersistentContextType を変更:もう一つのとき、これは正常に動作しないことです
(コメントを参照してください)関係)
上記のクエリを実行する前に、私はEntityManager.clear()コール を実行します。 (これもまた ONE-MANY 関係を遅延ロードする)。
なぜ陳腐化したデータが返されますか?私はがありません。第2レベルのキャッシュまたはクエリキャッシュが有効になっています。
何か間違っていますか? query.setHint(、)で設定できるものはありますか?
たぶん私は正しくTRANSACTIONAL対 "はをEXTENDED" 理解していません。
は、最終更新版としてマップされていますか? – Surya
ちょうどそれを試みました。働かなかった。私は明示的な "バージョン"フィールドを追加し、@ Versionで注釈を付けることも試みました。また、動作しませんでした。 – systemoutprintln
はlastUpdatedを見ていると等しいとハッシュコードですか? em.createQuery()の結果に属していない追加のオブジェクトが表示されていますか? – zmf