一尘不染

Hibernate子查询

hibernate

我在使用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找到一个合理的例子,因此我不得不在这里提出要求。


阅读 369

收藏
2020-06-20

共1个答案

一尘不染

在添加eq表达式之前,尝试为“ car”属性创建别名:

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