gpt4 book ai didi

有条件地 hibernate 子标准

转载 作者:行者123 更新时间:2023-12-03 22:47:31 27 4
gpt4 key购买 nike

我需要转换这个 HQL:

FROM Appointment a WHERE (a.group==null OR :user MEMBER OF a.group.groupMembers) 

标准。如何实现仅在主标准不匹配时才使用子标准?

我试过类似的东西,但我卡住了:

Criteria subcrit = crit.createCriteria("group");
subcrit.createAlias("groupMembers", "gmembers");
crit.add(Restrictions.or(Restrictions.eq("group", null), Restrictions.eq("gmembers.snuserId", user.getId())));

最佳答案

好的,我找到了适合我的解决方案:首先,我创建了一个分离条件,它找到用户所属的所有组 ID:

DetachedCriteria subquery = DetachedCriteria.forClass(Group.class);
subquery.createAlias("groupMembers", "gm");
subquery.add(Restrictions.eq("gm.userId", user.getId()));
subquery.setProjection(Projections.property("id"));

然后是我的主要标准:

    crit.add(
Restrictions.or(
Restrictions.isNull("group"),
Subqueries.propertyIn("group.groupId", subquery)
)
);

希望对大家有帮助

关于有条件地 hibernate 子标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9826950/

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