私は JPA を使用していますが、このクエリを構築する最善の方法を考えています。
これが私のデータモデルです(これは完全に不自然で無意味です):
テーブル「モノ」にはテーブル「高さ」「幅」および「長さ」と多対多の関係
があります高さ、幅、長さはそれぞれ多対多です-テーブル「Creator」との1対1の関係
特定の Thing について、すべての Creators が少なくとも Height、Width、Length のいずれかに関連付けられていることを望みます (1 つの Thing に多くの高さがあることに注意してください - これは不自然だと言いました)。
たとえば、高さだけを気にする場合は、次のようにします。
SELECT c FROM Creator c
INNER JOIN c.heights height
WHERE height.thing = :thing
OR で複数の内部結合を指定する方法はありますか? 複数の内部結合がブール AND として機能すると想定しています。
これが私の現在の最良の推測です:
SELECT c FROM Creator c
WHERE EXISTS (SELECT h FROM Height h WHERE h.creator = c AND h.thing = :thing)
OR EXISTS (SELECT w FROM Width w WHERE w.creator = c AND w.thing = :thing)
OR EXISTS (SELECT l FROM Length l WHERE l.creator = c AND l.thing = :thing)
このクエリを構築するより良い方法はありますか? 私の実際のケースでは、height-width-length コレクションに約 10 個の要素があります。