Spring Cache抽象是否支持多值查询?
而不是:
@Cacheable( “书”) 公共图书findBook(ISBN isbn){...}
想象一下这样的查询:
@Cacheable( “书”) 公共列表<书> findBook(列表< ISBN> isbns){...}
支持吗?它会单独缓存集合中返回的每本书吗?
谢谢!
答案 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而不是自定义对象。
希望它至少会有所帮助:)