0

以下の 2 つのケースでは、Hibernate EntityManagerfindメソッドの動作が異なるようです。

ケース 1 - トランザクションの開始前にエンティティがデータベースに存在しない。findエンティティのトランザクション内で、が返されますnull

ケース 2 - エンティティはトランザクション前に DB に存在します。トランザクション内では、エンティティがremove'd でfindあり、同じキーの がスローされEntityNotFoundExceptionます。

これは予想される動作ですか?flush同じように動作させるには、前にa を実行する必要がありfindますか?

4

2 に答える 2

0

OK、私の質問の2番目の部分に答えると、ケース2のとのflush間でケース1と同じように動作するようです。つまり、例外をスローせずに戻ります(これは、例外として必要なものです)。ロールバックをトリガーします)。removefindfindnull

答えのポイントは、なぜfind違う振る舞いをするべきなのかを教えてくれる人なら誰にでも当てはまります。

于 2013-01-16T22:23:08.650 に答える