Sto cercando di cambiare campo booleano utilizzando il seguente HQL:Negate operatore unario in Hibernate QL
update Entity e set e.booleanField = not e.booleanField where e.id = ?1;
Purtroppo "QuerySyntaxException: token imprevisto: non vicino ..." è stato gettato.
La mia domanda è: c'è qualche operatore unario per l'ibernazione che supporta tale espressione? O qualche trucco noto?
SQL supporta tali query (PostgreSQL):
update entity_table set booleanField = not(booleanField);
[Presumibilmente] (http://docs.jboss.org/hibernate/orm/3.3/ reference/it/html/queryhql.html # queryhql-espressioni) HQL supporta 'not' nelle espressioni, ma non sono sicuro che ciò si applichi alle espressioni al di fuori della clausola' where'. Potresti provare un comune hack 'set e.booleanField = 1 - e.booleanField' per ovviare a questo problema. – dasblinkenlight
Spiacente, non funziona. "ERRORE: operatore inesistente: intero - booleano" –
Ecco un altro modo per esprimere "NON':' set e.booleanField = (e.booleanField == false) '. – dasblinkenlight