【发布时间】:2019-09-16 14:49:57
【问题描述】:
我有以下 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$1.buildIllegalCollectionDereferenceException(DotNode.java:73)
我相信这是有充分理由的。问题是如何实现这种行为? 最好不要使用 JOINs。
提前致谢。
【问题讨论】:
-
因为 ob.listSC 是一个集合并且没有属性registrationDate
-
这正是问题所在!查询对我来说也不好看,但我不知道如何重写它