检查 NamedQuery 中的空参数

Check null parameter in NamedQuery

当列是数字类型时,我通常在我的命名查询中使用这个参数验证:

(-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)

而不是

(p.date between ?1 and ?2)

你可以试试

(p.date < ?1 or ?1 is null) and (p.date > ?2 or ?2 is null)