【java】org.apache.ibatis.cache.CacheException: Error serializing object. Mybatis二级缓存报错的两种解决办法
官网文档的提示:
readOnly(只读)属性可以被设置为 true 或 false。只读的缓存会给所有调用者返回缓存对象的相同实例。 因此这些对象不能被修改。这就提供了可观的性能提升。而可读写的缓存会(通过序列化)返回缓存对象的拷贝。 速度上会慢一些,但是更安全,因此默认值是 false。
也就是说,默认情况下,出于安全考虑,Mybatis将缓存设置成可读写的,然后通过序列化的方式返回给我们缓存的对象拷贝。
如果我们的对象没有实现可序列化的接口就会抛出 org.apache.ibatis.cache.CacheException: Error serializing objec 的异常。所以我们的解决方式有两种:
第一种:让我们的实体类实现 Serializable 接口即可。
@Data @AllArgsConstructor @NoArgsConstructor public class User implements Serializable { private Integer id; private String name; private String pwd; }
第二种:在配置文件中把 readOnly 设置为 true ,就无需用到序列化。
<!-- 启用缓存 --> <cache readOnly="true" />
参考自:https://blog.csdn.net/kzc5335475/article/details/117857436

浙公网安备 33010602011771号