wut*_*aer 2 conditional hibernate subquery criteria-api
我需要转换这个HQL:
FROM Appointment a WHERE (a.group==null OR :user MEMBER OF a.group.groupMembers)
Run Code Online (Sandbox Code Playgroud)
标准.我怎么能认为子标准仅在主标准不匹配时使用?
我尝试了类似的东西,但我被困住了:
Criteria subcrit = crit.createCriteria("group");
subcrit.createAlias("groupMembers", "gmembers");
crit.add(Restrictions.or(Restrictions.eq("group", null), Restrictions.eq("gmembers.snuserId", user.getId())));
Run Code Online (Sandbox Code Playgroud)
好吧,我为我找到了一个解决方案:首先我创建了一个独立的条件,它找到用户所在的所有组ID:
DetachedCriteria subquery = DetachedCriteria.forClass(Group.class);
subquery.createAlias("groupMembers", "gm");
subquery.add(Restrictions.eq("gm.userId", user.getId()));
subquery.setProjection(Projections.property("id"));
Run Code Online (Sandbox Code Playgroud)
那么对于我的主要标准:
crit.add(
Restrictions.or(
Restrictions.isNull("group"),
Subqueries.propertyIn("group.groupId", subquery)
)
);
Run Code Online (Sandbox Code Playgroud)
希望它可以帮助某人
| 归档时间: |
|
| 查看次数: |
7758 次 |
| 最近记录: |