gpt4 book ai didi

sql - HQL查询以检查集合的大小是否为0或为空

转载 作者:行者123 更新时间:2023-12-03 10:33:01 24 4
gpt4 key购买 nike

我尝试生成一个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(), IS NULL)
另请参阅: How to check if the collection is empty in NHibernate (HQL)?(这对我不起作用)

但仍然不是我想要查看的结果或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. Expressions
  • JPA 1.0规范
  • 第4.6.11节“空集合比较表达式”
  • 关于sql - HQL查询以检查集合的大小是否为0或为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3760711/

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