gpt4 book ai didi

java - hibernate 子查询

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:52:02 24 4
gpt4 key购买 nike

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

但不幸的是它没有。所以看来我实际上必须使用子查询类来创建条件。但是我无法通过谷歌找到一个合理的例子,所以这导致我在这里问它。

最佳答案

像这样尝试:

表详情:类别(id、name、desc、parentId、active)

    DetachedCriteria subCriteria = DetachedCriteria
.forClass(Category.class);
subCriteria.add(Restrictions.isNull("parent"));
subCriteria.add(Restrictions.eq("active", Boolean.TRUE));
subCriteria.add(Restrictions.eq("name", categoryName));
subCriteria.setProjection(Projections.property("id"));

Criteria criteria = getSession().createCriteria(Category.class);
criteria.add(Restrictions.eq("active", Boolean.TRUE));
criteria.add(Subqueries.propertyEq("parent", subCriteria));

它将生成如下查询:

select
*
from
Categories this_
where
this_.active=1
and this_.parentId = (
select
this0__.id as y0_
from
Categories this0__
where
this0__.parentId is null
and this0__.active=1
and this0__.name='Health Plan'
)

祝你好运!

-罗塔什·辛格

关于java - hibernate 子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1411287/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com