我有一个这样的课程
public class RegionShopMap {
private Integer regionId;
private String shopId;
}
和使用Set集合保存这些对象批次的DAO方法。 方法签名:
void saveRegionShops(Set<RegionShopMap> regionShopMapSet);
我的问题是我正在尝试使用来自Set的RegionShopMap对象的regionId作为关键字来执行缓存逐出。对于Set中的所有对象,regionId是相同的。 我不知道如何使用Spring Expression Language来提取regionId。 我尝试过这样的事情:
@CacheEvict(value = "Shop.byRegionId", key ="#regionShopMapSet[0].regionId")
任何帮助都会受到高度赞赏,或者可能是另一种解决方案。
非常感谢
答案 0 :(得分:0)
如果你想使用EL提取regionId的值,那么你写的内容非常好。
@Data
@AllArgsConstructor
static class RegionShopMap {
private Integer regionId;
private String shopId;
}
public static void main(String args[]) {
ExpressionParser parser = new SpelExpressionParser();
StandardEvaluationContext context = new StandardEvaluationContext();
Set<RegionShopMap> regionShopMapSet = new HashSet<>();
regionShopMapSet.add(new RegionShopMap(1, "2"));
regionShopMapSet.add(new RegionShopMap(3, "4"));
context.setVariable("regionShopMapSet", regionShopMapSet);
Expression exp = parser.parseExpression("#regionShopMapSet[1].regionId");
System.out.println(exp.getValue(context));
return;
}
但是正如您所提到的,regionId
的值对于所有对象都是相同的。
在这种情况下,您应该尝试使用CacheEvict
而不使用任何密钥。