1

私は休止状態の新人であるというヘッドアップ警告から始めます。次のようなクエリがあるとします。

UPDATE entity SET attribute='value' WHERE anotherAttribute IN (val1, val2);

私のプロジェクトが休止状態を使用している場合、そのようなクエリを実行する正しい方法は何ですか? 単純な createSQLQuery() を使用しますか? もっと「オブジェクト指向」の方法でやりたいのですが、既存のデータベースからデータを取得して更新するのに問題があるようです。createQuery() を使用して更新するデータを取得してから、結果リストを調べてセッターを使用しますか? もう1つの問題はwhere in句です...

助けてくれてありがとう。

4

1 に答える 1

3

Hibernate でサポートされている「オブジェクト指向」の方法は基準 API によるものですが、更新はサポートされておらず、選択のみがサポートされています。それを反復処理し、セッターを呼び出して更新する必要があります (これは小さなコレクションには問題なく、レベル 2 キャッシュでうまく機能しますが、データセットが大きい場合は問題になります)。それ以外の場合は、HQL またはネイティブ SQL を使用します。

Hibernate 基準クエリ:

 session.createCriteria(Entity.class)
    .add(Restrictions.eq("attribute", "value"))
    .add(Restrictions.in("anotherAttribute", <collection-of-values>)
    .list();

検討する価値のある別のオプションはQueryDSLです。

于 2013-02-04T15:41:19.967 に答える