HQL查询以检查集合的大小是否为0或为空
我尝试生成一个HQL查询,其中包括带有空Appoinment集合(由OneToMany映射)的用户:
SELECT u FROM User u JOIN u.appointments uas WHERE u.status = 1 AND (uas.time.end < :date OR size(uas) = 0)
我尝试了几种方式(NOT EXIST ELEMENT(), ISNULL
)
但仍然不是我想要查看的结果或HQL或SQL SERVER中的某些错误
没有JOIN的查询有效:
"FROM User u WHERE u.status = 1 AND size(u.appointments) = 0"
另一个JOIN解决了这个问题:
SELECT u FROM User u LEFT JOIN u.appointments pas1 LEFT JOIN pas1.slot t WHERE u.status = 1 AND t.end <= :date1 OR t.end IS NULL ORDER BY u.name asc
回答:
使用IS EMPTY
应该可以(我希望使用JPQL语法):
SELECT u FROM User u WHERE u.status = 1 AND u.appointments IS EMPTY
如果没有,请显示生成的SQL。
参考文献
- Hibernate Core参考指南
- 14.10。表达方式
- JPA 1.0规范
- 第4.6.11节“空集合比较表达式”
以上是 HQL查询以检查集合的大小是否为0或为空 的全部内容, 来源链接: utcz.com/qa/410858.html