我在使用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));