【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

posted @ 2022-07-03 17:33  狼窝窝  阅读(126)  评论(0)    收藏  举报