1. ホーム
  2. java

[解決済み] Hibernateサブクエリ

2022-02-11 15:52:30

質問

Hibernateでサブクエリを作成する際に問題があります。残念ながら、Subqueriesクラスはほとんど文書化されていないため、次のSQLをHibernate Criteriaに変換する方法がまったくわかりません。

SELECT id
FROM car_parts
WHERE car_id IN ( SELECT id FROM cars WHERE owner_id = 123 )

次のようにすれば「うまくいく」と思っていたのですが。

session.createCriteria(CarParts.class).add(eq("car.owner", myCarOwner));

と表示されますが、残念ながら表示されません。つまり、実際には Subqueries クラスを使用して Criteria を作成する必要があるようです。しかし、私はGoogleで合理的な例を見つけることができなかったので、ここでそれを尋ねることにつながります。

解決方法は?

このようにeq式を追加する前に、"car"プロパティにエイリアスを作成してみてください。

session.createCriteria(CarParts.class)  
        .createAlias("car", "c")  
        .add(eq("c.owner", myCarOwner));