版本:3.4.1

问题: @TableName(autoResultMap = true) @Data class XXX {

   ...

  @TableField(typeHandler = FastjsonTypeHandler.class) // @TableField(typeHandler = JacksonTypeHandler.class) 
   private List<Integer> levels;

  ...

}

分页插件一起使用,在分页查询实体的时候会报错

报错: org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'levels' from result set. Cause: com.alibaba.fastjson.JSONException: expect '[', but int, pos 1, line 1, column 20 at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:440) at com.sun.proxy.$Proxy83.selectList(Unknown Source) at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:223) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.executeForIPage(MybatisMapperMethod.java:122) at com.baomidou.mybatisplus.core.override.MybatisMapperMethod.execute(MybatisMapperMethod.java:87) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy$PlainMethodInvoker.invoke(MybatisMapperProxy.java:148) at com.baomidou.mybatisplus.core.override.MybatisMapperProxy.invoke(MybatisMapperProxy.java:89) at com.sun.proxy.$Proxy95.selectPage(Unknown Source) at com.baoqi.managementdev.service.impl.DevServiceImpl.listPageCollectActions(DevServiceImpl.java:418) at com.baoqi.managementdev.service.impl.DevServiceImpl$$FastClassBySpringCGLIB$$e6227266.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:687) at com.baoqi.managementdev.service.impl.DevServiceImpl$$EnhancerBySpringCGLIB$$a5660a3b.listPageCollectActions() at com.baoqi.managementdev.controller.CollectController.listPageCollectActions(CollectController.java:44) at com.baoqi.managementdev.controller.CollectController$$FastClassBySpringCGLIB$$735b6e43.invoke() at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:771) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.validation.beanvalidation.MethodValidationInterceptor.invoke(MethodValidationInterceptor.java:119) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.proceed(CglibAopProxy.java:749) at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:691) at com.baoqi.managementdev.controller.CollectController$$EnhancerBySpringCGLIB$$ea631401.listPageCollectActions() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.reactive.result.method.InvocableHandlerMethod.lambda$invoke$0(InvocableHandlerMethod.java:147) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:118) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) at reactor.core.publisher.MonoZip$ZipCoordinator.signal(MonoZip.java:247) at reactor.core.publisher.MonoZip$ZipInner.onNext(MonoZip.java:329) at reactor.core.publisher.MonoPeekTerminal$MonoTerminalPeekSubscriber.onNext(MonoPeekTerminal.java:173) at reactor.core.publisher.FluxDefaultIfEmpty$DefaultIfEmptySubscriber.onNext(FluxDefaultIfEmpty.java:92) at reactor.core.publisher.FluxOnErrorResume$ResumeSubscriber.onNext(FluxOnErrorResume.java:73) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) at reactor.core.publisher.MonoFlatMap$FlatMapMain.onNext(MonoFlatMap.java:144) at reactor.core.publisher.FluxContextStart$ContextStartSubscriber.onNext(FluxContextStart.java:96) at reactor.core.publisher.FluxMapFuseable$MapFuseableConditionalSubscriber.onNext(FluxMapFuseable.java:287) at reactor.core.publisher.FluxFilterFuseable$FilterFuseableConditionalSubscriber.onNext(FluxFilterFuseable.java:330) at reactor.core.publisher.Operators$MonoSubscriber.complete(Operators.java:1782) at reactor.core.publisher.MonoCollect$CollectSubscriber.onComplete(MonoCollect.java:152) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) at reactor.core.publisher.FluxPeek$PeekSubscriber.onComplete(FluxPeek.java:252) at reactor.core.publisher.FluxMap$MapSubscriber.onComplete(FluxMap.java:136) at reactor.netty.channel.FluxReceive.onInboundComplete(FluxReceive.java:378) at reactor.netty.channel.ChannelOperations.onInboundComplete(ChannelOperations.java:373) at reactor.netty.http.server.HttpServerOperations.onInboundNext(HttpServerOperations.java:492) at reactor.netty.channel.ChannelOperationsHandler.channelRead(ChannelOperationsHandler.java:96) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at reactor.netty.http.server.HttpTrafficHandler.channelRead(HttpTrafficHandler.java:214) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.CombinedChannelDuplexHandler$DelegatingChannelHandlerContext.fireChannelRead(CombinedChannelDuplexHandler.java:436) at io.netty.handler.codec.ByteToMessageDecoder.fireChannelRead(ByteToMessageDecoder.java:324) at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:296) at io.netty.channel.CombinedChannelDuplexHandler.channelRead(CombinedChannelDuplexHandler.java:251) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919) at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:163) at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:714) at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:650) at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:576) at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:493) at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989) at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:748) Caused by: org.apache.ibatis.executor.result.ResultMapException: Error attempting to get column 'levels' from result set. Cause: com.alibaba.fastjson.JSONException: expect '[', but int, pos 1, line 1, column 20 at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:87) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getPropertyMappingValue(DefaultResultSetHandler.java:511) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyPropertyMappings(DefaultResultSetHandler.java:480) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:404) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:354) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:328) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:301) at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:194) at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:65) at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:63) at com.sun.proxy.$Proxy115.query(Unknown Source) at com.baomidou.mybatisplus.core.executor.MybatisSimpleExecutor.doQuery(MybatisSimpleExecutor.java:69) at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:325) at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156) at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:165) at com.baomidou.mybatisplus.core.executor.MybatisCachingExecutor.query(MybatisCachingExecutor.java:92) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:426) ... 76 more Caused by: com.alibaba.fastjson.JSONException: expect '[', but int, pos 1, line 1, column 20 at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:733) at com.alibaba.fastjson.serializer.CollectionCodec.deserialze(CollectionCodec.java:126) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:700) at com.alibaba.fastjson.JSON.parseObject(JSON.java:395) at com.alibaba.fastjson.JSON.parseObject(JSON.java:299) at com.alibaba.fastjson.JSON.parseObject(JSON.java:572) at com.baomidou.mybatisplus.extension.handlers.FastjsonTypeHandler.parse(FastjsonTypeHandler.java:48) at com.baomidou.mybatisplus.extension.handlers.AbstractJsonTypeHandler.getNullableResult(AbstractJsonTypeHandler.java:41) at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:85) ... 103 more

Comment From: miemieYaho

Caused by: com.alibaba.fastjson.JSONException: expect '[', but int, pos 1, line 1, column 20 at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:733) at com.alibaba.fastjson.serializer.CollectionCodec.deserialze(CollectionCodec.java:126) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:700) at com.alibaba.fastjson.JSON.parseObject(JSON.java:395) at com.alibaba.fastjson.JSON.parseObject(JSON.java:299) at com.alibaba.fastjson.JSON.parseObject(JSON.java:572)

Comment From: kshq1996

Caused by: com.alibaba.fastjson.JSONException: expect '[', but int, pos 1, line 1, column 20 at com.alibaba.fastjson.parser.DefaultJSONParser.parseArray(DefaultJSONParser.java:733) at com.alibaba.fastjson.serializer.CollectionCodec.deserialze(CollectionCodec.java:126) at com.alibaba.fastjson.parser.DefaultJSONParser.parseObject(DefaultJSONParser.java:700) at com.alibaba.fastjson.JSON.parseObject(JSON.java:395) at com.alibaba.fastjson.JSON.parseObject(JSON.java:299) at com.alibaba.fastjson.JSON.parseObject(JSON.java:572)

这是我数据库的数据 数据库是集合类型的数据 分页出不来啊 但是我单查能出来,分页就不行

Comment From: miemieYaho

不管你单查还是分页,数据封装都是mybatis在干

Comment From: kshq1996

不管你单查还是分页,数据封装都是mybatis在干

这个我也知道啦,似乎autoResultMap = true 和 分页插件冲突了,分页查的时候似乎这个typehandler没有工作? MyBatis-Plus @TableName(autoResultMap = true) + @TableField(typeHandler = FastjsonTypeHandler.class)  分页查询的时候会出错 MyBatis-Plus @TableName(autoResultMap = true) + @TableField(typeHandler = FastjsonTypeHandler.class)  分页查询的时候会出错 MyBatis-Plus @TableName(autoResultMap = true) + @TableField(typeHandler = FastjsonTypeHandler.class)  分页查询的时候会出错

Comment From: miemieYaho

如果没起作用那就不会有 fastjson 的异常

Comment From: kshq1996

如果没起作用那就不会有 fastjson 的异常

意思是这个问题解决不了么,我这么写肯定是没问题的,也是按照教程来写的,就遇到分页的时候出这个问题,可以在分页的时候规避掉这个字段么,不手写SQL的前提下

Comment From: miemieYaho

进typehandler里debug会吗?

Comment From: kshq1996

进typehandler里debug会吗?

行 我慢慢看看吧 谢谢