1

次の JPA 2.0 準拠の JPQL クエリを検討してください。

SELECT p
  FROM PostalAddress p
  JOIN p.constituent c
 WHERE c.id = :constituentId
 ORDER BY p.type.displayOrder

...と:

SELECT p
  FROM PostalAddress p
  JOIN p.constituent c
  JOIN p.type t
 WHERE c.id = :constituentId
 ORDER BY t.displayOrder

どちらの場合も、p.type@ManyToOne別のエンティティ ( PostalAddressType) との関係です。

2 つのクエリの違いは、最初のクエリには明示的なJOINfrom PostalAddresstoがないことPostalAddressTypeです。それは、節のp.type.displayOrderスニペットを通して暗示されていると思います。WHERE2 番目には、明示的な がありJOINます。

これらのクエリは同等ですか?

それらは以下と同等ですか:

SELECT p
  FROM PostalAddress p
 WHERE p.constituent.id = :constituentId
 ORDER BY p.type.displayOrder

...?

そのようです。これらの場合、明示的なJOINs (との間、PostalAddressおよびConstituentとの間) は何らかの形で (読みやすさと明示性以外に) 役立ちますかPostalAddress?PostalAddressType

JOIN完全を期すために、パス式がコレクションに評価される場合は a が常に必要であることを理解しています。私は (現時点では :-)) そのケースには興味がありません。

4

1 に答える 1