如何在hibernate中基于id更新行

时间:2016-03-29 13:39:04

标签: java hibernate oracle11g

我是hibernate的新手。我正在使用SesssionFactory来获取事务的会话,我在搜索后找到的一种方法是使用set参数设置几个字段,即

Query query = getCurrentSession().createSQLQuery(
    "UPDATE table_name set field1=:f1 where ID=:id");

query.setParameter("f1", f1);
query.setParameter("id", id);

但我想更新整行。我已经在实体类中设置了值,但有没有办法根据id将整个实体类的值传递给数据库,id是我要更新的表的主键。

3 个答案:

答案 0 :(得分:3)

你已经拥有了hibernate实体对象中的所有数据吗?然后直接调用会话:

getCurrentSession().save(myEntity);

创建一个新对象,或

getCurrentSession().update(myEntity);

更新现有行。

如果不确定,您可以使用:

getCurrentSession().saveOrUpdate(myEntity);

答案 1 :(得分:0)

查看Session#update(或saveOrUpdate)。这将允许您将完整的映射对象持久保存到数据库。

答案 2 :(得分:0)

要尽可能地使用OO,您可以通过session.get获取实体(entityClass,id); 然后在通过setter / getters修改对象之后,可以使用update方法将其保存回DB:session.update(entity);