2016-01-21 2 views
0

Я хочу, чтобы перевести следующий MySQL запрос HQLHQL оператор НЕ проблема

UPDATE `table` SET `my_bool` = NOT my_bool 

А также мне нужно изменить только строку с выбранным идентификатором

Моя попытка ниже

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()); 
} 

Я получаю следующее сообщение об ошибке:

unexpected token: NOT

Я только начал изучать HQL и documentation говорит, что это действует оператор

11.6.9. NOT predicate operator

The NOT operator is used to negate the predicate that follows it. If that following predicate is true, the NOT resolves to false. If the predicate is true, NOT resolves to false. If the predicate is unknown, the NOT resolves to unknown as well.

Можете ли вы помочь

ответ

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(); 
+0

Я сделал это, используя em.createNativeQuery. В какой версии спящего режима вы используете – QGA

+0

Я использую .Net и NHibernate 4.0.3.4 –

Смежные вопросы