【发布时间】:2016-04-23 00:11:27
【问题描述】:
我有一个方法:
@Cacheable(key = "#jobId")
public Optional<JobInfo> getJobById(String jobId) {
log.info("Querying for job " + jobId);
counterService.increment("queryJobById");
Job job = jobsRepository.findOne(jobId);
if (job != null) {
return Optional.of(createDTOFromJob(job));
}
return Optional.empty();
}
当我尝试检索缓存的项目时,出现以下异常:
2016-01-18 00:01:10 错误 [trace=,span=] http-nio-8021-exec-2 [dispatcherServlet]:182 - Servlet.service() 用于 servlet [dispatcherServlet] 在上下文中的路径[] 抛出异常 [请求处理失败;嵌套异常是 org.springframework.data.redis.serializer.SerializationException: 无法序列化;嵌套异常是 org.springframework.core.serializer.support.SerializationFailedException: 无法使用 DefaultSerializer 序列化对象;嵌套异常是 java.lang.IllegalArgumentException: DefaultSerializer 需要一个可序列化的有效负载,但收到了一个 [java.util.Optional]] 类型的对象,其根本原因 java.lang.IllegalArgumentException:DefaultSerializer 需要一个可序列化的有效负载,但收到了一个 [java.util.Optional] 类型的对象
【问题讨论】:
-
可选是不可序列化的类。尝试使用不同类型的对象。也许
JobInfo本身?你的JobInfo应该实现Serializable接口。
标签: spring spring-cache