0

我是hibernate的新手,我有一个名为student的实体类,它有5个字段:姓名、年龄、地址、电话和性别。然后我想更新姓名和年龄字段。

student.setName("foo");
student.setAge("11");
getHibernateTemplate().update(student);

运行代码后,除了上面代码中的两个字段外,其他字段值变为空。我希望我的另一个领域保持原样。

任何建议都深表感谢

顺便说一句,对不起我的英语不好

4

2 回答 2

1

首先要更新值,您必须通过主键获取值,然后更新对象(Bean),然后应该调用更新方法。

于 2012-12-10T09:31:21.270 回答
0

您需要做的是之前从数据库中检索您的学生,以便为所有字段设置一个值:

Student student = getHibernateTemplate().get(Student.class, id);
student.setName("foo");
student.setAge("11");
getHibernateTemplate().update(student);

或者,或者,您可以手动更新您的字段:

Session session;
boolean newSession=false;
try {
    session=getHibernateTemplate().getSessionFactory().getCurrentSession();
} catch (final HibernateException e) {
    session=getHibernateTemplate().getSessionFactory().openSession();
    newSession=true;
}

session.createQuery(
  "update Student student set " +
  "student.Name = :studentName, " +
  "student.Age = :studentAge " +
  "where student.Id = :studentId")
.setString("studentName", "foo")
.setString("studentAge", "11")
.setString("studentId", id)
.executeUpdate();

if (newSession)
    session.close();
于 2012-12-10T09:42:40.580 回答