настройка гибернации для postgres для col = null вместо "is null" - PullRequest
2 голосов
/ 14 июля 2020

Я прочитал этот пост ...

Есть ли режим SQL для MySQL, разрешающий «WHERE x = NULL» (что означает «WHERE x IS NULL»)?

В спящем режиме NamedQuery постоянно используется в качестве перехода в нашей компании, а api критериев является большим разовым. Это просто, поскольку

select c from Customer c where c.firstName=:firstName and c.middleName=:middleName and c.lastName=:lastName

Конечно, затем мы столкнулись с тем, что middleName было равно null, и все сломалось. Затем мы столкнулись с нулевым значением firstName, которое затем сломалось. По всей схеме у нас будут ситуации, подобные этой, постоянно такоооо, мы ищем способ интерпретировать

c .middleName = null в c .middleName имеет значение null, когда оно равно null.

Есть ли для этого параметр гибернации, чтобы он просто делал это правильно в mysql и postgres (лучшая идеальная ситуация) ИЛИ этот параметр в приведенном выше сообщении для postgres. Где это и как я могу это настроить? или это за запрос (тьфу)?

Мы находимся в процессе переключения с MySQL на postgres, поскольку метод MySQL работы с uniqueConstraints в нулевых столбцах очень не идеален для us по сравнению с postgres (в этом MySQL позволяет Джону обнулить Смит дважды, а postgres - нет).

спасибо, Дин

1 Ответ

0 голосов
/ 14 июля 2020

В PostgreSQL оператор НЕ ОТЛИЧИТСЯ ОТ является нулевым безопасным предикатом равенства. Однако, как и оператор <=> mysql, этот предикат является расширением стандарта SQL.

Я не знаю, что в спящем режиме есть какие-либо нулевые безопасные операторы равенства, поэтому я предполагаю единственный способ обрабатывать такие запросы - использовать функцию native query . Очевидно, что такие запросы c специфичны для используемой базовой базы данных, поэтому не совсем идеальны.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...