当列是数字类型时,我通常在我的命名查询中使用此参数验证:
(-1 = ?1 OR column = ?1)
但是使用日期过滤器之间我不能进行相同类型的验证:
(p.date between ?1 and ?2)
我找到的解决方案是添加一个新参数,检查日期是否为空:
(dateInitial == null || dateFinal == null)
在命名查询中:
(?3 = true OR p.date between ?1 and ?2)
答案 0 :(得分:1)
而不是
(p.date between ?1 and ?2)
你可以尝试
(p.date < ?1 or ?1 is null) and (p.date > ?2 or ?2 is null)