2017-02-16 47 views
0

我只是試圖將項目的結果存儲在緩存中,並且除了密鑰以外都一切順利。春季數據中的咖啡因緩存密鑰jpa

SimpleKeyGenerator通常會保存基於參數的對象或結果,在我的情況下,我想要將對象存儲在緩存中,並且鍵應該是列表中對象的屬性,這裏是一個示例。

public class Item{ 
    private Long id; 
    private Long reference; 
    private Integer status; 
    //setter and getter 
} 

public interface ItemRepository extends JpaRepository<Long,Item>{ 

    @Cachable("items") 
    List<Item> findByReferenceAndStatus(Long reference, Integer status); 
} 

現在我要存儲在基於item.id緩存每個對象,我知道我們可以使用註釋的關鍵屬性,但我怎麼能訪問ID爲利用規劃環境地政司的每個項目。 不幸的是,創建自定義密鑰生成器將無濟於事,因爲它們都基於參數,目標類和方法。

有什麼建議嗎?

回答

0

我相信你想優化高速緩存存儲以後通過項目ID進行查詢。

如果您正確地爲您的實體配置JPA第二級別,那麼當您使用JPA自動使用第二級別時,通過ID進行良好配置的負載實體時,您無需這樣做。

要一個結果只是使用緩存規劃環境地政司#result關鍵屬性:

https://docs.spring.io/spring/docs/current/spring-framework-reference/html/cache.html#cache-spel-context-tbl

@Cacheable(cacheNames="item", key="#result.id")