hibernate update总是为null

时间:2012-12-10 09:29:39

标签: java spring hibernate

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

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

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

任何建议都深表赞赏

对不起我的坏英语

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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();