2013-10-07 6 views
6

jpa persistence providerとしてhibernateを使用しているspringデータjpaを使用しています。春のデータの更新されたレコードの数を取得する方法jpa?

私のアプリケーションでネイティブクエリを使用しています。いくつかの更新クエリがあり、更新クエリが実行されたときに更新される実際のレコード数を取得したいと考えています。これを行うには春のデータJPAの方法はありますか?

私は現在以下のアプローチに従っています。

@Transactionalがサービスレイヤーに追加されました。

ここでの問題は、テーブルが更新されるとカウントが1になることです。しかし、行が更新されないケースもあります。この場合も、カウントは1になります。しかし、実際に更新されたレコードの数は、時々0になるようにしたいと考えています。

私がここで何か間違っているのを誰かに教えてもらえますか?

+0

これは大変お礼します。 – cyclecount

答えて

3

あなたはあなたが見るよりも、このクエリ

@Override 
    protected Object doExecute(AbstractJpaQuery query, Object[] values) { 

     int result = query.createQuery(values).executeUpdate(); 

     if (em != null) { 
      em.clear(); 
     } 

     return result; 
    } 

を実行するために使用されModifyingExecutor、見てみる場合は、それが更新される要素の数を返すために、ネイティブのJPAインフラストラクチャへの唯一の代表者です。

これは、使用したデータベースまたはORMフレームワークの設定と関係がある可能性があります。それ以外の場合は、作成したクエリが正しい結果を返す必要があります。

+0

それはJpaQueryExecutionではありませんか? – AdrianX