【发布时间】:2016-04-02 14:14:37
【问题描述】:
当列是数字类型时,我通常在命名查询中使用此参数验证:
(-1 = ?1 OR column = ?1)
但使用 between 的日期过滤器无法进行相同类型的验证:
(p.date between ?1 and ?2)
我找到的解决方案是添加一个新参数检查日期是否为空:
(dateInitial == null || dateFinal == null)
在命名查询中:
(?3 = true OR p.date between ?1 and ?2)
- 是否有不需要添加其他参数的解决方案?使用现有参数。
【问题讨论】:
-
您能在调用命名查询之前检查日期吗?
-
是的,我做到了:
(dateInitial == null || dateFinal == null)。你说的是在 null 的情况下发送另一个值吗? -
真的不是您问题的答案,我只是说检查代码中的日期,如果为 null,则不要调用命名查询。数据库中有空日期吗?
-
我明白,但就我而言,我还有其他参数要检查,不,我没有。
标签: hibernate hql named-query