Я использую PostgreSQL и Hibernate. Поскольку я использую SQL-запросы, которые не учитываются в спящем режиме, я использую nativeQuery в своей аннотации Query. У меня есть несколько параметров даты, и неизбежно, по крайней мере две из них являются нулевыми
Я должен проверять условие, только если мой параметр не равен нулю. Проблема в том, что я не могу разыграть свою дату, если эта дата пуста.
Я пробую разные возможные решения, но ничего не получается
:dEchTransacEqual is null OR transaction.d_ech_transac = cast(:dEchTransacEqual as date)
coalesce(:dEchTransacGreaterThanEqual, null) is null OR transaction.d_ech_transac >= cast(:dEchTransacGreaterThanEqual as date)
CASE cast(:dEchTransacGreaterThanEqual as date) WHEN not null THEN transaction.d_ech_transac >= cast(:dEchTransacGreaterThanEqual as date) END
CASE coalesce(cast(:dEchTransacGreaterThanEqual as boolean), null) WHEN not null THEN transaction.d_ech_transac >= cast(:dEchTransacGreaterThanEqual as date) END
to_date(cast(:dEchTransacGreaterThanEqual as date), 'YYYY/MM/DD') is null OR transaction.d_ech_transac >= cast(:dEchTransacGreaterThanEqual as date)
:dEchTransacGreaterThanEqual is null OR transaction.d_ech_transac >= to_date(cast(:dEchTransacGreaterThanEqual as date), 'YYYY/MM/DD')
У меня нет больше идей, чтобы решить мою проблему. Как я могу справиться с недействительностью моей даты, используя nativeQuery из hibernate?
Последнее (и грязное) решение состоит в том, чтобы реализовать столько методов репо, сколько у меня было вариантов использования (3).
PS. : Мне нужно использовать nativeQuery, потому что я использую over () и раздел, который не обрабатывается Hibernate.