Java 检查值时Hibernate的DB2查询问题

Java 检查值时Hibernate的DB2查询问题,java,sql,hibernate,db2,Java,Sql,Hibernate,Db2,我使用Hibernate 4和DB2执行本机查询: select * from TABLE1 t where (:param1 is null or t.NAME = :param1) 这会引发一个异常,即null在上下文中无效(因为SQL变成了表1 t中的select*,其中(null为null或t.NAME=null)) 所以我试着: select * from TABLE1 t where (COALESCE(:param1,'!') = '!' or t.NAME = :param1)

我使用Hibernate 4和DB2执行本机查询:

select * from TABLE1 t where (:param1 is null or t.NAME = :param1)
这会引发一个异常,即null在上下文中无效(因为SQL变成了表1 t中的select*,其中(null为null或t.NAME=null))

所以我试着:

select * from TABLE1 t where (COALESCE(:param1,'!') = '!' or t.NAME = :param1)
当我传递值“JUSTIN”时抛出异常-

这似乎是因为DB2检查“!”与“:param1”的长度

DB2中有没有传递动态参数的方法


我开始讨厌DB2了……

事实证明,这在Hibernate中是有效的:

select * from TABLE1 t where NVL(:param1, t.NAME) = t.NAME;
select * from TABLE1 t where NVL(:param1, t.NAME) = t.NAME;