【问题标题】:DB2 Query issue with Hibernate when checking for values检查值时使用 Hibernate 的 DB2 查询问题
【发布时间】:2020-03-27 19:22:49
【问题描述】:

我有这个查询,使用 Hibernate 4 和 DB2,运行原生查询:

select * from TABLE1 t where (:param1 is null or t.NAME = :param1)

这会抛出 null 在上下文中无效的异常(因为 SQL 变为 select * from TABLE1 t where (null is null or t.NAME = null))

所以我尝试了:

select * from TABLE1 t where (COALESCE(:param1,'!') = '!' or t.NAME = :param1)

当我传递值“JUSTIN”时会引发异常 -

"THE VALUE OF INPUT VARIABLE OR PARAMETER NUMBER  IS INVALID OR TOO LARGE FOR THE TARGET COLUMN OR THE TARGET VALUE"

这似乎是因为 DB2 会根据“!”检查“:param1”的长度。

DB2 中有没有办法传递动态参数?

我开始讨厌 DB2....

【问题讨论】:

    标签: java sql hibernate db2


    【解决方案1】:

    事实证明这适用于 Hibernate:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-02
      • 1970-01-01
      相关资源
      最近更新 更多