JPAで簡単なことをしようとしています。
私はテーブルを持っています
BusinessId name
------------ ------
1 Joe
2 bob
とテーブル製品:
productID name
------------ ------
1 Pen
2 paper
これらは多対多の関係にあるため、別のテーブル businessHasProductID を作成しました。
BusinessId productID
------------ -----------
1 1
1 2
2 2
ここで、BusinessId の名前 = 'x' と productID の名前 = 'y' である BusinessId と productID フォームの businessHasProductID を選択します。
テーブルを作成してから、(netBeans のウィザードから) エンティティ クラスを作成しました。Businesses.name = 'x' の「Businesses」テーブルを取得する方法と、Products.name = 'y' の「Products」テーブルを取得する方法を知っています。しかし、これらの結果を組み合わせて ID を取得したいと考えています。
私はやろうとしました:
Query query = getEntityManager().createQuery("
SELECT b FROM businessesHasProductID WHERE b.BusinessId IN
(SELECT t0.BusinessId FROM Businesses t0 WHERE t0.BusinessId = 'x')
AND b.productID IN
(SELECT t1.productID FROM Products t1 WHERE t1.productID = 'y')
");
それはうまくいきませんでした。IN に無効なデータが含まれていると不平を言っています。