1

私は休止状態についてほとんど知識がなく、休止状態に関連するコードの問題をデバッグしようとしています。問題は、休止状態がデータベースに加えられた変更を取得できないことです。データベースにクエリを実行して現在の変更を確認できますが、何らかの理由で休止状態がそれを取得できません。

問題のデータは子エンティティ (いわば) であり、次の注釈が付けられています。 @OneToMany(fetch = FetchType.EAGER, mappedBy = "parent", cascade=CascadeType.ALL)
@Fetch(FetchMode.SUBSELECT)

ただし、コードでは、このエンティティが JavassistLazyInitializerクラスを使用して反射的にフェッチされていることがわかります。JTA操作全体がトランザクション (ネストされたトランザクションなしで、 で定義された機能のサブセットを持つカスタム クラス) にラップされます。

私の質問は次のとおりです。

1) サブセレクト クエリを表示する方法 を使用してすべてを吐き出すようにlog4jファイルを設定しましたlog4j.logger.org.hibernate=TRACEが、それでもサブセレクトクエリが表示されません。

2) hibernate が取得できないデータは、別の hibernate トランザクションによって を使用して書き込まれますEntityManager#persist()flush()また、persist() の後に呼び出されていることもわかります。このすべてを考えると、新しい休止状態のトランザクションが前のトランザクションによって書き込まれた値を読み取れないというシナリオはありますか?

これを通じてデバッグするための提案/アイデア/ヒントは大歓迎です。ありがとう。

4

0 に答える 0