0

iam は休止状態で新しく、student という名前のエンティティ クラスがあり、5 つのフィールド、名前、年齢、住所、電話番号、および性別があります。次に、名前と年齢のフィールドを更新したいと思います。

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

コードを実行した後、上記のコードの 2 つのフィールドを除いて、他のフィールド値は null になります。私は他のフィールドがそのままであると期待しています。

どんな提案でも大歓迎です

ところで私の悪い英語でごめんなさい

4

2 に答える 2

1

値を更新するには、まず主キーで値を取得し、次にオブジェクト (Bean) を更新してから update メソッドを呼び出す必要があります。

于 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 に答える