mybatis-bug:org.apache.ibatis.cache.CacheException: Error serializing object.

异常信息:

Exception in thread "main" org.apache.ibatis.cache.CacheException: Error serializing object.  Cause: java.io.NotSerializableException: demo.cyj.pojo.Student
    at org.apache.ibatis.cache.decorators.SerializedCache.serialize(SerializedCache.java:102)
    at org.apache.ibatis.cache.decorators.SerializedCache.putObject(SerializedCache.java:56)
    at org.apache.ibatis.cache.decorators.LoggingCache.putObject(LoggingCache.java:51)
    at org.apache.ibatis.cache.decorators.SynchronizedCache.putObject(SynchronizedCache.java:45)
    at org.apache.ibatis.cache.decorators.TransactionalCache.flushPendingEntries(TransactionalCache.java:122)
    at org.apache.ibatis.cache.decorators.TransactionalCache.commit(TransactionalCache.java:105)
    at org.apache.ibatis.cache.TransactionalCacheManager.commit(TransactionalCacheManager.java:44)
    at org.apache.ibatis.executor.CachingExecutor.close(CachingExecutor.java:61)
    at org.apache.ibatis.session.defaults.DefaultSqlSession.close(DefaultSqlSession.java:264)
    at demo.cyj.Test.main(Test.java:44)

描述:

今天在做mybatis的二级缓存的demo时,关闭了第一次的sqlSession后,在第二次想要通过SqlSessionFactory里的二级缓存直接查数据时,抛出了这个异常。

原因:

通过读异常信息:org.apache.ibatis.cache.CacheException: Error serializing object. Cause: java.io.NotSerializableException: demo.cyj.pojo.Student at
可以获取一个关键词:serializing,大概就是pojo中的实体类要序列化了,因为使用的是EhCahce缓存组件,有时会将数据缓存到硬盘上,需要可序列化支持的。必须实现java.io.Serializable。

解决:

在相应的实体类上实现一个Serializable接口就OK了。


实现接口

总结:

实体类不管用不用得到序列化,都可以实现序列化,有好处没坏处

你可能感兴趣的:(mybatis-bug:org.apache.ibatis.cache.CacheException: Error serializing object.)