Java Hibernate QL中的否定一元运算符

Java Hibernate QL中的否定一元运算符,java,hibernate,operators,unary-operator,Java,Hibernate,Operators,Unary Operator,我尝试使用以下hql切换布尔字段: update Entity e set e.booleanField = not e.booleanField where e.id = ?1; 不幸的是,抛出了“QuerySyntaxException:意外标记:不靠近…” 我的问题是:hibernate是否有支持这种表达式的一元运算符?或者任何众所周知的伎俩 sql支持此类查询(postgresql): 我只需要使用本机SQL查询就可以了。要切换布尔属性,相当于HQL/JPQL下的not一元运算符,请使

我尝试使用以下hql切换布尔字段:

update Entity e set e.booleanField = not e.booleanField where e.id = ?1;
不幸的是,抛出了“QuerySyntaxException:意外标记:不靠近…”

我的问题是:hibernate是否有支持这种表达式的一元运算符?或者任何众所周知的伎俩

sql支持此类查询(postgresql):


我只需要使用本机SQL查询就可以了。

要切换布尔属性,相当于HQL/JPQL下的
not
一元运算符,请使用:

UPDATE entity e SET e.booleanField = (e.booleanField=false)

HQL在表达式中支持
not
,但我不确定这是否适用于
where
子句之外的表达式。您可能需要尝试一个常见的hack
设置e.booleanField=1-e.booleanField
来解决此问题。抱歉,不起作用。“错误:运算符不存在:整数-布尔”下面是另一种表达
的黑客方法:
设置e.booleanField=(e.booleanField==false)
。更新实体e设置e.booleanField=!e、 布尔域,其中e.id=?1;更新实体e集合e.booleanField!=e、 布尔域,其中e.id=?1;你试过这样的吗?
UPDATE entity e SET e.booleanField = (e.booleanField=false)