我想在现有列中添加一个值,但我不想先选择它。现在我必须做类似
的事情// 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 :(得分: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
找到更多信息答案 1 :(得分:0)
您可以创建一个只执行更新的hql查询
Query updateBonus = createQuery("UPDATE Employee SET bonus = bonus+100 WHERE id = :id" );
updateBonus.setInteger("id", employee.getId());
updateBonus.executeUpdate();