具有多值查询的Spring Cache Abstraction

时间:2012-11-01 14:03:48

标签: java spring caching

Spring Cache抽象是否支持多值查询?

而不是:

@Cacheable( “书”) 公共图书findBook(ISBN isbn){...}

想象一下这样的查询:

@Cacheable( “书”) 公共列表<书> findBook(列表< ISBN> isbns){...}

支持吗?它会单独缓存集合中返回的每本书吗?

谢谢!

3 个答案:

答案 0 :(得分:3)

Spring Cache将整个结果存储在单个缓存键下,因此无法单独存储集合中返回的每个对象。在缓存JPA查询结果的情况下,您可以使用查询缓存。在其他情况下,如果memcached是您的选项,您可以尝试Simple Spring Memcached和ReadThroughMultiCache注释。它将在专用缓存键下单独存储集合的每个元素。

答案 1 :(得分:1)

查询缓存确实可以缓存每个查询输入的结果列表。请注意,只有返回实体的ID才会保存在查询缓存中。如果您希望缓存属性,则必须为返回的实体类型本身单独启用实体缓存

答案 2 :(得分:0)

为我工作。这是我的答案的链接。 https://stackoverflow.com/a/60992530/2891027

TL:DR

@Cacheable(cacheNames = "test", key = "#p0")
public List<String> getTestFunction(List<String> someIds) {

我的示例是使用String而不是自定义对象。

希望它至少会有所帮助:)