我是hibernate的新手,我有一个名为student的实体类,它有5个字段:姓名、年龄、地址、电话和性别。然后我想更新姓名和年龄字段。
student.setName("foo");
student.setAge("11");
getHibernateTemplate().update(student);
运行代码后,除了上面代码中的两个字段外,其他字段值变为空。我希望我的另一个领域保持原样。
任何建议都深表感谢
顺便说一句,对不起我的英语不好
首先要更新值,您必须通过主键获取值,然后更新对象(Bean),然后应该调用更新方法。
您需要做的是之前从数据库中检索您的学生,以便为所有字段设置一个值:
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();