次の 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 つのクエリの違いは、最初のクエリには明示的なJOIN
from PostalAddress
toがないことPostalAddressType
です。それは、節のp.type.displayOrder
スニペットを通して暗示されていると思います。WHERE
2 番目には、明示的な がありJOIN
ます。
これらのクエリは同等ですか?
それらは以下と同等ですか:
SELECT p
FROM PostalAddress p
WHERE p.constituent.id = :constituentId
ORDER BY p.type.displayOrder
...?
そのようです。これらの場合、明示的なJOIN
s (との間、PostalAddress
およびConstituent
との間) は何らかの形で (読みやすさと明示性以外に) 役立ちますかPostalAddress
?PostalAddressType
JOIN
完全を期すために、パス式がコレクションに評価される場合は a が常に必要であることを理解しています。私は (現時点では :-)) そのケースには興味がありません。