7
我嘗試使用下面的HQL切換布爾字段:在Hibernate中QL求反一元運算符
update Entity e set e.booleanField = not e.booleanField where e.id = ?1;
不幸「QuerySyntaxException:意外的標記:附近沒有......」被拋出。
我的問題是:是否有一些支持這種表達式的hibernate的一元運算符?或者任何知名的技巧?
SQL支持這樣的查詢(PostgreSQL的):
update entity_table set booleanField = not(booleanField);
[據稱](http://docs.jboss.org/hibernate/orm/3.3/ reference/en/html/queryhql.html#queryhql-expressions)HQL在表達式中支持'not',但我不確定這是否適用於where子句之外的表達式。你可能想嘗試一個常見的破解'set e.booleanField = 1 - e.booleanField'來解決這個問題。 – dasblinkenlight 2012-04-25 14:25:37
對不起,沒有工作。 「錯誤:運算符不存在:integer - 布爾值」 – 2012-04-26 05:35:18
這是表達'NOT'的另一種黑客方法:set e.booleanField =(e.booleanField == false)'。 – dasblinkenlight 2012-04-26 09:45:38