创建一个 HQL 查询,它将获取集合中的每个项目并进行比较
Creating a HQL query which would take each item in a collection and compare it
我有以下 HQL 查询
SELECT ob FROM objectBase ob WHERE size(ob.listSC) > 0 AND ob.listSC.registrationDate BETWEEN :startDate AND :endDate
它应该做什么:
- 获取数据库中的所有 objectBase 对象,其中 listSC(实体集合)不是 null 和 empty(遗憾的是无法弄清楚如何让它也忽略空值)
- 对于 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.buildIllegalCollectionDereferenceException(DotNode.java:73)
我相信这是有充分理由的。问题是无论如何如何实现这种行为?
最好不使用 JOINs.
提前致谢。
如果您需要任何帮助,请尝试以下查询让我知道。
SELECT ob FROM objectBase ob left join ob.listSC sc WHERE size(ob.listSC) > 0 AND sc.registrationDate BETWEEN :startDate AND :endDate
我有以下 HQL 查询
SELECT ob FROM objectBase ob WHERE size(ob.listSC) > 0 AND ob.listSC.registrationDate BETWEEN :startDate AND :endDate
它应该做什么:
- 获取数据库中的所有 objectBase 对象,其中 listSC(实体集合)不是 null 和 empty(遗憾的是无法弄清楚如何让它也忽略空值)
- 对于 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.buildIllegalCollectionDereferenceException(DotNode.java:73)
我相信这是有充分理由的。问题是无论如何如何实现这种行为? 最好不使用 JOINs.
提前致谢。
如果您需要任何帮助,请尝试以下查询让我知道。
SELECT ob FROM objectBase ob left join ob.listSC sc WHERE size(ob.listSC) > 0 AND sc.registrationDate BETWEEN :startDate AND :endDate