2017-06-20 11 views
1

FlushMode.ALWAYSを使用せずに1つのメソッドを実行したいと考えています。1つのメソッドでSPRING DATAのFlushModeをCOMMITに設定する方法

だから私はsetFlushMode(FlushMode.COMMIT)にする必要がありますが、私はそれを行う方法を知らないし、私は春のデータを使用することはできないと考え始めている。

私はSessionFactoryのをautowireこの

sessionFactory.getCurrentSession().setFlushMode(FlushMode.COMMIT); 

を実行しようとしました。しかし、私は私が理解することは、私はセッションファクトリをautowireすることができないということです

No qualifying bean of type [org.hibernate.SessionFactory] found for dependency... 

このエラーを得たので、私は使用できません。フラッシュモードを設定するその方法。

はその後、私の質問は

春のデータを使用して、単一の方法のためのフラッシュモードを設定する方法はあり

ますか?どうやって?

+0

は、なぜあなたはこれをしたいですか? –

+0

レガシーアプリケーションには、1つのことをクエリするために多くのことを設定する大きなコードがあります。そのクエリがフラッシュされると、スローされてはならない例外がスローされます –

答えて

1

私はこのように私のJPARepositoryインターフェイスで私のfindメソッドに注釈を付け終わった:

@QueryHints(value = { @QueryHint(name = org.hibernate.annotations.QueryHints.FLUSH_MODE, value = "COMMIT") }) 
    List<ConcatenaCep> findByCep(Integer cep); 
+1

ライフセーバーを無効にします。同じトランザクション内で18k回実行したクエリがさらに18k回保存され、231秒が必要でした。最後に、フラッシュモードを変更する方法を見つけ出し、時間を17秒に短縮しました。 – msparer

+0

@msparerうわー、それはかなり良いです!私は誰かを助けることができてうれしいです。 =) –

関連する問題