我是hibernate的新手,我有一个名为student的实体类,它有5个字段,名称,年龄,地址,电话和性别。 然后我想更新名称和年龄字段。
student.setName("foo");
student.setAge("11");
getHibernateTemplate().update(student);
运行代码后,除了上面代码中的两个字段外,其他字段值变为null。我希望我的其他领域保持不变。
任何建议都深表赞赏
对不起我的坏英语答案 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();