Leí este post...
¿Existe un modo SQL para MySQL que permita "DÓNDE x = NULL" (que significa "DÓNDE x ES NULL")?
En hibernate, NamedQuery se usa constantemente como el goto en nuestra empresa y la API de criterios es una gran excepción. Son fáciles en cuanto a
select c from Customer c where c.firstName=:firstName and c.middleName=:middleName and c.lastName=:lastNamePor supuesto, luego nos encontramos con que middleName era nulo y las cosas se estropearon. Luego nos encontramos con que firstName era nulo, lo que luego se rompió. En todo el esquema, vamos a tener situaciones como estas constantemente, estamos buscando una manera de interpretar
c.middleName = nulo a c.middleName es nulo cuando es nulo.
¿Existe una configuración de hibernación para esto, por lo que simplemente lo hace correctamente en mysql y postgres (la mejor situación ideal) O ese parámetro en la publicación anterior para postgres? ¿Dónde está eso y cómo puedo configurarlo? o es por consulta (ugh)?
Estamos en el proceso de cambiar de MySQL a postgres, ya que el método de MySQL para tratar con restricciones únicas en columnas nulas no es ideal para nosotros en comparación con postgres (ya que MySQL permite que John anule a Smith dos veces mientras que postgres no lo hace).
gracias, decano
En PostgreSQL, el operador NO ES DISTINTO DE es el predicado igual a prueba de nulos. Sin embargo, de manera similar al operador <=> de mysql, este predicado es una extensión del estándar SQL.
No estoy al tanto de que hibernate tenga operadores iguales seguros para nulos, así que supongo que la única forma de manejar tales consultas es a través de la función de consulta nativa . Obviamente, tales consultas son específicas de la base de datos subyacente utilizada, por lo que no son realmente ideales.