2017-06-20 84 views
1

我想提出來,而不FlushMode.ALWAYS運行一個方法。如何設置FlushMode在春季DATA提交的單一方法,

所以我需要setFlushMode(FlushMode.COMMIT),但我不知道該怎麼做,我開始覺得它利用彈簧的數據是不可能的。

我試圖自動裝配的SessionFactory併爲此

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

但我得到這個錯誤

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

我的理解是,我不能自動裝配會話工廠,所以我不能使用這種設置沖洗模式的方式。

然後我的問題是

有沒有一種方法來設置刷新模式使用彈簧數據的單一方法?怎麼樣?

+0

你爲什麼要這麼做? –

+0

傳統應用程序中存在一個很糟糕的代碼,它設置了很多事情來查詢一件事情。該查詢刷新拋出一個不應拋出的異常 –

回答

1

我結束我的註釋find方法在我JPARepository界面是這樣的:

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

Defo救生員。如果查詢在同一個事務中運行了18k次,而額外的18k則需要231秒。最後找到了如何改變沖洗模式並將時間縮短到17秒。 – msparer

+0

@msparer哇,這很不錯!我很高興它可以幫助某人。 =) –