我是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是我要更新的表的主键。
答案 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);