gpt4 book ai didi

"in subselect"的 hibernate 标准

转载 作者:行者123 更新时间:2023-12-02 18:54:51 25 4
gpt4 key购买 nike

我正在尝试做这样的事情,但使用 Criteria 而不是 HQL:

select user from User where user in (
select user from UserDomain where domain.id = "XXX"
)

用户是与连接表 UserDomain 具有一对多关系的实体。这里的要点只是找到链接到 id =“XXX”的的用户。

这看起来应该非常简单......但到目前为止我还没有找到任何有用的文档。

最佳答案

在您需要搜索具有一对多用户域的用户的情况下,子查询非常有用。在这种情况下,WHERE UserId IN(子查询) 带来了很大的优势:我们仍在使用平面 User 表/实体...因此我们可以进行正确的分页.

这是文档 15.8. Detached queries and subqueries

草案可能是:子查询:

DetachedCriteria userSubquery = DetachedCriteria.forClass(UserDomain.class, "ud")
// Filter the Subquery
.add(Restrictions.eq(UserDomain.DOMAIN, domain))
// SELECT The User Id
.setProjection( Projections.property("ud.userId") );

主要查询:

Criteria query = session.createCriteria(User.class, "u")
.add( Subqueries.propertyIn("u.id", userSubquery) );

现在我们有了一个查询,可以用于分页

关于 "in subselect"的 hibernate 标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20426734/

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