我有2个域对象Price
和Product
定义如下。
public class Price {
private Long id;
private Double basePrice;
private Double tax;
private Double maxRetailPrice;
}
public class Product {
private Long id;
private String title;
private Price price;
}
我已经定义了Controller
方法,如下所示:
@GetMapping("{id}")
@Cacheable(value = "product-cache", key = "#id")
public Product getProductById(@PathVariable Long id) {
// some implementation goes here.
}
是否可以将product
和price
分别以其各自的id
字段作为键来缓存?
类似的东西:
@GetMapping("{id}")
@Caching(cacheable = {
@Cacheable(value = "product-cache", key = "#id"),
@Cacheable(value = "price-cache", key = "???")
})
public Product getProductById(@PathVariable Long id) {
// some implementation goes here.
}
如何使用键作为price
对象的product
将price-cache
对象的id
部分存储到price
中。
我已经尝试使用SpEL进行多种方式和组合,但是无法使其正常工作。
如果有人尝试过这种方法,请帮助我。
谢谢。
答案 0 :(得分:0)
如果您要返回产品对象,则可以尝试以下操作:
@GetMapping("{id}")
@Caching(cacheable = {
@Cacheable(value = "product-cache", key = "#id"),
@Cacheable(value = "price-cache", key = "#result.data.product.price.id")
})
public Product getProductById(@PathVariable Long id) {
// some implementation goes here.
}