如何向列添加值?

时间:2015-03-17 05:10:11

标签: java hibernate

我想在现有列中添加一个值,但我不想先选择它。现在我必须做类似

的事情
// 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中做些什么吗?如果是这样,怎么样。如果没有,建议的最佳做法是什么?

2 个答案:

答案 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();