Ошибка DB2 Query в Hibernate при проверке значений - PullRequest
1 голос
/ 27 марта 2020

У меня есть этот запрос, использующий Hibernate 4 и DB2, выполняющий собственный запрос:

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

Это вызывает исключение, что null недопустим в контексте (поскольку SQL становится select * from TABLE1 t, где (null is null или 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 способ передать параметры Dynami c?

Я начинаю ненавидеть DB2 ....

1 Ответ

1 голос
/ 30 марта 2020

Оказывается, это работает с Hibernate:

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