1
我用querydsl使用spring數據jpa。我有一個方法返回包含總數的頁面查詢結果。獲得總數是昂貴的,我想緩存它。這怎麼可能?spring-data:緩存查詢總數
我幼稚的做法
@Cacheable("queryCount")
private long getCount(JPAQuery query){
return query.count();
}
不起作用(使它發揮他們的方式想爲緩存不應該是整個查詢,只是標準的實際鍵)。無論如何測試它,沒有工作,然後我發現這一點:Spring 3.1 @Cacheable - method still executed
我明白這一點,我只能緩存公共接口方法。然而在所述方法中,我需要緩存返回值的屬性,例如。
Page<T> findByComplexProperty(...)
我需要緩存
page.getTotalElements();
詮釋整個方法的工作(這是緩存),但不是我想的方式。假設獲得總計數需要30秒。因此,對於每個新頁面請求用戶需要等待30秒。如果他返回頁面,則使用緩存,但我希望計數只能運行一次,然後從緩存中提取計數。
我該怎麼做?