2016-03-29 14 views
1

私は休止状態で新しいです。私は検索が設定されたパラメータすなわちhibernateのidに基づいて行を更新するには

Query query = getCurrentSession().createSQLQuery(
    "UPDATE table_name set field1=:f1 where ID=:id"); 

query.setParameter("f1", f1); 
query.setParameter("id", id); 

を使用して、いくつかのフィールドを設定するために使用された後、私が見つけたトランザクションのセッションと片道を取得するためにSesssionFactoryを使用していますが、私は、全体の行を更新します。私はすでにエンティティクラスの値を設定していますが、idに基づいてデータベースにエンティティクラス全体の値を渡す方法があります。idは、更新したいテーブルの主キーです。

答えて

3

すでにすべてのデータが休止状態のエンティティオブジェクトに存在していますか?それからちょうどセッションを直接呼び出す:

getCurrentSession().save(myEntity); 

既存の行を更新するために、新しいオブジェクト、または

getCurrentSession().update(myEntity); 

を作成します。

わからない場合は、使用することができます。

getCurrentSession().saveOrUpdate(myEntity); 
+0

AFAIK、データベースからオブジェクトを取得した場合、セッションが閉じられると自動的に保持されます。つまり、getCurrentSession()。update(myEntity);を呼び出す必要はありません。 –

+0

ID – Sunny

0

Session#update(またはするsaveOrUpdate)を見てみましょう。これにより、完全なマップされたオブジェクトをデータベースに永続化することができます。

+0

に基づいてテーブル内の行を更新しますが、IDに基づいてテーブル内のその行を更新する条件を確認します – Sunny

+0

'session.update(entity)'を呼び出すと、 'UPDATEテーブルSET field1 =:field1Value、... WHERE id =:id'。したがって、 'チェック基準'によって、レコード識別子でフィルタリングすることを意味している場合。次にはい。 – PA001

0

できるだけ多くの場合、session.get(entityClass、id);でエンティティを取得できます。 そしてsetters/gettersでオブジェクトを変更した後、updateメソッドを使ってDBに保存することができます:session.update(entity);

関連する問題