2

PersonsHibernateTemplate を使用して、データベース テーブルの特定のフィールドを更新したいと考えています。私はこのようにしようとしていますが、これはうまくいきません。

public void  updateDate(int Id,Date receivedDate) {
      Id = 10;
      receivedDate = 2012-11-12;
      String queryString = "update Persons set recievedDate=? where Id=? ";
      getHibernateTemplate().update(queryString, new Object[] { Id, receivedDate });
}

このクエリを実行すると、「UnkownEntity」という例外が発生します。HibernateTemplate を使用して特定のフィールドの更新を行うことはできますか? 特定のフィールドの更新を行う他の代替手段はありますか?

4

4 に答える 4

3

updateメソッド ingetHibernateTemplateは、hql クエリの実行を許可しません。休止状態のエンティティ オブジェクトのみを許可します。

リンクの休止状態テンプレートの更新方法を参照してください

あなたの場合、Hibernate はupdate Persons set recievedDate=? where Id=?エンティティとして解決しようとします。

解決:

Query q = s.createQuery("update Persons set recievedDate=:recievedDate where Id=:Id");
q.setString("recievedDate", "some date");
q.setString("Id", "54");
q.executeUpdate();

その明確なことを願っています。

于 2012-11-14T18:25:41.573 に答える
0

セッションファクトリ構成にクラスをリストする必要があります。

于 2012-11-14T07:24:01.727 に答える
0

HQL で Person という名前のエンティティは、db テーブル名ではなく Java クラス名を使用する必要があると想定しています

于 2012-11-14T07:41:04.910 に答える
-2

HibernateTemplate が使用されている場合、これが私の解決策です。

// EntityName is the table to be updated

EntityName entity =  hibernateTemplate.find("from EntityName where id=?" , id);

//set the value which has to be updated

entity.setValue(yourNewValue);

hibernateTemplate.SaveOrUpdate(entity);  

// above updated the existing Entity table without duplicates
于 2015-08-20T06:40:47.057 に答える