Java Hibernate QL中的否定一元运算符
我尝试使用以下hql切换布尔字段: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一元运算符,请使
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)