java - 创建一个 HQL 查询,该查询将获取集合中的每个项目并进行比较

标签 java hibernate hql

我有以下 HQL 查询

SELECT ob FROM objectBase ob WHERE size(ob.listSC) > 0 AND ob.listSC.registrationDate BETWEEN :startDate AND :endDate

它应该做什么:

  1. 获取数据库中的所有objectBase对象,其中listSC(实体集合)不是null(遗憾的是无法弄清楚如何让它忽略空值)
  2. 对于 listSC 中的每个项目,检查特定实体在给定日期之间是否具有 registrationDate 属性。

但不幸的是它给了我

Caused by: org.hibernate.QueryException: illegal attempt to dereference collection [objectbase0_.id.listSC] with element property reference [registrationDate]
at org.hibernate.hql.internal.ast.tree.DotNode$1.buildIllegalCollectionDereferenceException(DotNode.java:73)

我相信这是有充分理由的。问题是如何实现这种行为? 最好不使用JOIN

提前致谢。

最佳答案

如果您需要任何帮助,请尝试以下查询,让我知道。

SELECT ob FROM objectBase ob left join ob.listSC sc WHERE size(ob.listSC) > 0 AND sc.registrationDate BETWEEN :startDate AND :endDate

关于java - 创建一个 HQL 查询,该查询将获取集合中的每个项目并进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57951276/

相关文章:

java - 无法获取 SequenceInformation 并且在 ResultSet 中找不到列 start_with

java - 使用赋值运算符设置 cplex java 约束 "+="

java - 我需要帮助来设置 Reddit API

java - 为什么在 JUnitParams 方法中设置字段变量后它们为 null?

hibernate - OpenEJB 与 Tomcat、Hibernate 和 JPA

java - 通过HQL连接两、三个相关表

java - 当我尝试删除标题栏时应用程序崩溃

java - 如何排除一个方法是@Transactional?

java - Hibernate 4 有什么新功能?

java - 当我尝试运行查询时出现异常。这是为什么?