0

JPA仕様は次のように述べています。

同様の型の値のみを比較できます。型が同じ Java 言語型に対応する場合、または一方がプリミティブ Java 言語型であり、もう一方がラッパー化された Java クラス型と同等である場合 (たとえば、int と Integer はこの意味で型に似ています)。この規則には 1 つの例外があります。数値昇格の規則が適用される数値を比較することは有効です。似ていない型の値を比較しようとする条件式は、この数値の場合を除いて許可されていません。

算術演算子と比較演算子は、Java のプリミティブ数値型に相当するラッパー Java クラスの状態フィールドと入力パラメーターに適用できることに注意してください。

同じ抽象スキーマ タイプの 2 つのエンティティは、それらが同じ主キー値を持っている場合に限り、等しくなります。

列挙型に対する等値/不等値の比較のみがサポートされる必要があります。

埋め込み可能なクラスまたはマップ エントリ タイプのインスタンスに対する比較はサポートされていません。

これは、クエリが

where entity1 = entity2

where entity1.id = entity2.id

常に同じ結果が得られる (そして同じパフォーマンスが得られる) べきか、それともいくつかのエッジ ケース (たとえば、エンティティの 1 つが null の場合) があるか? 動作はすべての実装で同じですか?

4

1 に答える 1

1

これらは、エンティティの取得元と JPA 実装によって異なります。

entity1 = entity2、特定の場合に JPA 実装が結合を最適化できるようにする場合があります。

于 2012-12-03T15:21:37.943 に答える