2015-03-17 2 views
0

Я хочу добавить значение в существующий столбец, но я не хочу сначала его выбирать. Прямо сейчас я должен был бы сделать что-то вродеКак добавить значение в столбец?

// run hql in a named query 
from Employee where id = :id 

// after running the above 
e.setBonus(e.getBonus() + 100); // add 100 to e's bonus 

// commit to database 
HibernateUtil.saveOrUpdate(e); 

Но я хочу что-то, это только один-и-сделано - что-то вроде

update Employee e set e.bonus = e.bonus + 100 

Это то, что я могу сделать в Hibernate? Если да, то каким образом. Если нет, то какая рекомендуемая передовая практика для такого обновления?

ответ

0

Да, вы можете сделать это, как предполагалось, с помощью запроса hql. Попробуйте такой код:

Session session = sessionFactory.openSession(); 
Transaction tx = session.beginTransaction(); 
String hql="update Employee e set e.bonus = e.bonus + :p where id=:id"; 
session.createQuery(hql).setInteger("p",100).setInteger("id",id).executeUpdate(); 
tx.commit(); 
session.close(); 

Более подробную информацию вы можете найти в link

+0

Я исправил ссылку. И объяснит это –

0

Вы можете создать запрос HQL, который только делает обновления

Query updateBonus = createQuery("UPDATE Employee SET bonus = bonus+100 WHERE id = :id"); 
updateBonus.setInteger("id", employee.getId()); 
updateBonus.executeUpdate(); 
Смежные вопросы