Estoy intentando cambiar campo booleano utilizando la siguiente HQL:Negar operador unitario en Hibernate QL
update Entity e set e.booleanField = not e.booleanField where e.id = ?1;
desgracia "QuerySyntaxException: símbolo inesperado: no cerca ..." fue lanzado.
Mi pregunta es: ¿hay algún operador unario para hibernar que admita esa expresión? O cualquier truco bien conocido?
SQL soporta este tipo de consultas (PostgreSQL):
update entity_table set booleanField = not(booleanField);
[Supuestamente] (http://docs.jboss.org/hibernate/orm/3.3/ reference/es/html/queryhql.html # queryhql-expressions) HQL admite 'no' en las expresiones, pero no estoy seguro de si eso se aplica a las expresiones fuera de la cláusula' where'. Puede intentar un hack 'conjunto común e.booleanField = 1 - e.booleanField' para evitar este problema. – dasblinkenlight
Lo siento, no funciona. "ERROR: el operador no existe: integer - booleano" –
Aquí hay otra forma de hackear para expresar 'NOT':' establecer e.booleanField = (e.booleanField == false) '. – dasblinkenlight