qq_BigGoldenFish 2017-05-27 09:07 采纳率: 0%
浏览 1379

用springcache,出现key为null,求助什么原因啊,找不到资料

@Cacheable(value="redisCache")
List selectContentByCategoryId(@Param("cid") Long categoryId);

严重: Servlet.service() for servlet [taotao-facadeweb] in context with path [] threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) CacheableOperation[public abstract java.util.List com.taotao.mapper.TbContentMapper.selectContentByCategoryId(java.lang.Long)] caches=[redisCache] | key='#categoryId' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless=''] with root cause
java.lang.IllegalArgumentException: Null key returned for cache operation (maybe you are using named params on classes without debug info?) CacheableOperation[public abstract java.util.List com.taotao.mapper.TbContentMapper.selectContentByCategoryId(java.lang.Long)] caches=[redisCache] | key='#categoryId' | keyGenerator='' | cacheManager='' | cacheResolver='' | condition='' | unless=''
at org.springframework.cache.interceptor.CacheAspectSupport.generateKey(CacheAspectSupport.java:493)


  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-05 22:34
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在使用Spring Cache时,如果遇到NullPointerException异常,可能的原因有以下几种:

    1. 参数传递问题:如果在方法中设置了@Cacheable注解,并且传入了空的键值对(例如Long categoryId = null;),则可能会导致缓存操作失败。这是因为Spring Cache在处理缓存操作时会自动检查提供的键是否为空。

    2. 未指定或错误的缓存管理器:如果你没有正确地设置或使用缓存管理器来管理你的缓存数据,也可能导致这种错误。确保你在使用Spring Cache时正确配置了缓存管理器。

    3. 类定义不支持named params:如果类的定义中使用了Named Parameter Mapping(NPM)来获取缓存数据,那么你需要确保你的类和方法在编译时已经添加了必要的信息,否则可能会导致错误。这通常涉及到在类中正确地使用@Named注解,并将对应的缓存名称作为参数。

    4. 命名参数被忽略:某些情况下,Spring Cache可能无法识别到你所使用的命名参数。这可能是由于命名参数没有正确地声明,或者命名参数没有正确的映射到缓存中的特定键上。

    5. 缓存操作逻辑错误:即使上述所有情况都不存在,也有可能是你的缓存操作逻辑出现了错误。确保你的缓存操作逻辑是正确的,特别是当涉及命名参数的情况。

    为了更好地理解问题所在,建议查看详细的错误日志以获取更多的上下文信息。此外,你可以尝试提供更具体的示例代码,以便于分析具体的问题原因。

    评论

报告相同问题?