gpt4 book ai didi

java - Hibernate 对多个条件的条件限制

转载 作者:行者123 更新时间:2023-11-30 02:49:56 24 4
gpt4 key购买 nike

我正在编写一个条件查询。我的查询基于与表属性和用户相对应的多个条件。如果 prop 为 12 或 13,则无论用户是谁,它都会返回结果,或者如果 prop 为 NULL,则用户必须已登录。Sql查询的where条件如下,返回4行

where (property.PROP in (12,13) or (property.PROP is null
and user.loggedInUser = 'XYZ'))

我的标准

Criteria userQuery = session.createCriteria(User.class);
Criteria propertyQuery = userQuery .createCriteria("property");

Criterion crt = (Criterion) userQuery.add(Restrictions.eq("loggedInUser", userId));

propertyQuery.add(
Restrictions.or(
Restrictions.in("prop",propList),
Restrictions.and(Restrictions.isNull("prop"),crt)
)
);

我的问题是 Restrictions.and(criterion,criterion) 采用两个条件作为参数。但是,在类型转换 (Criterion) 时,userQuery 上的第二个条件“crt”无效。 Hibernate会报错。我如何在 Criteria 中实现此功能。或如何编写条件 Restrictions.and(Restrictions.isNull("prop") , userQuery.add(Restrictions.eq("loggedInUser", userId)))

最佳答案

使用 Hibernate 标准进行连接,如下例代码所示:

 List cats = session.createCriteria(Cat.class)
.createAlias("kittens", "kit")
.add( Restrictions.like("kit.name", "Iz%") )
.list();

注意:上面的代码只是如何在 hibernate 条件中使用 Join 的示例。

关于java - Hibernate 对多个条件的条件限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39041105/

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