我正在使用 Hibernate 4.1.7 并尝试更新对象,但没有文档说明应该如何完成。目前,我正在这样做:
Person person = personDao.getPersonById(1);
person.setAge(23);
person.setLastname("McName");
person = personDao.update(person);
在 PersonDao 中更新如下:
public Person update(Person person) {
return entityManager.merge(person);
}
在 PersonDao 中 getPersonById 是:
public Person getPersonById(int id) {
personQuery = entityManager.createNamedQuery("Person.findPerson", Person.class);
personQuery.setParameter("id", id);
return personQuery.getSingleResult();
}
我还在 Person 类中定义了命名查询,并且在此处:
@NamedQuery(name="Person.findPerson", query="SELECT p FROM Person p WHERE p.id = :id")
通过使用我的人不会被更新,我应该如何使用 hibernate 实现更新?
最佳答案
您可能会想到两种情况。
您可能想要更改对象的某个属性,并且只更改该属性。
如果是这种情况,您希望使用以下方法:查找、修改、刷新、提交。
em.find(Person.class, person.getId())
person.setStatus("ACTIVE");
em.commit();//implicitly flushes if flush mode is COMMIT or AUTO.
您可能希望使用对象属性来更新项目。
如果是这种情况,您希望使用以下方法:合并、可选地修改、刷新、提交。
em.merge(person);
//modify person if you wish.
em.commit();//implicitly flushes if flush mode is COMMIT or AUTO.
关于java - 使用 EntityManager 更新 Hibernate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13102792/