HQL NOT运算符问题

时间:2016-01-21 10:20:54

标签: mysql hibernate hql

我想将以下mysql查询转换为HQL

UPDATE `table` SET `my_bool` = NOT my_bool

而且我还需要更改具有所选id

的行

我的尝试

UPDATE Model m SET m.flag = NOT m.flag WHERE m.id is :id 

function(Integer id){
     StringBuilder queryBuilder = new StringBuilder("UPDATE Model m SET m.flag = NOT m.flag WHERE m.id is :id");
     this.em.createQuery(queryBuilder.toString());
}

我收到以下错误:

  

意外令牌:NOT

我刚刚开始学习HQL,documentation说它是一个有效的运算符

  

11.6.9。 NOT谓词运算符

     

NOT运算符用于否定其后面的谓词。如果   在谓词为真后,NOT解析为false。如果   谓词是真的,不解析为假。如果谓词未知,   NOT也解析为未知。

你能帮忙吗

1 个答案:

答案 0 :(得分:1)

它对我有用:

UPDATE Model m SET m.flag = !m.flag WHERE m.id = :id 

和C#代码:

var query =  container.Resolve<ISession>().CreateQuery(hql);
query.SetParameter("id", 1);
query.ExecuteUpdate();