在我的应用程序中,缓存键是可空,所以我只想在键不为空时将其放入缓存中。
我尝试了很多不同的方法,但看起来Spring Cache 总是想要一个非空键。否则会抛出异常:
IllegalArgumentException:缓存操作返回空键(可能 您在没有调试信息的类上使用命名参数?) 生成器[public com.madme.sharding.model.App com.madme.sharding.service.impl.AppServiceImpl.saveOrUpdateApp(com.madme.sharding.model.App)] 缓存=[appsCache] | key='#result.uuid' |密钥生成器='' | 缓存管理器='redisCacheManager'|缓存解析器='' |条件='' | 除非='#p0.uuid == null'参考:1490185514616_gcfal96我想如果我指定了如下所示的“除非”条件,它应该忽略这个
CachePut而不抛出任何异常。
// I've tried #result.uuid and #p0.uuid, same output
@CachePut(value = APPS_CACHE, cacheManager = "redisCacheManager", key = "#result.uuid", unless = "#result.uuid == null")
public App saveOrUpdateApp(App app) {
return appRepository.saveAndFlush(app);
}
有人有什么想法吗?
提前致谢。
@Cacheable(value = "panDetailsCache", key = "#panMasterData.data?.idNumber ?: 'defaultKey'") 公共字符串 getPANDetails(PanMasterData panMasterData) 抛出 InterruptedException { // ...您获取 PAN 详细信息的逻辑... }