当前使用版本(必填,否则不予处理)

3.3.2

该问题是如何引起的?(确定最新版也有问题再提!!!)

在序列化LambdaQueryWrapper对象时由于需要序列化sqlSelect属性在jackson通过反射获取这个属性值的时候sqlSelect为null导致Method.invoke方法抛出空指针异常。

重现步骤(如果有就写完整)

LambdaQueryWrapper lambdaQueryWrapper = Wrappers.lambdaQuery(); lambdaQueryWrapper.eq(StringUtils.isNotBlank(schoolName), School::getSchoolName, schoolName); lambdaQueryWrapper.and(wrapper->{ wrapper.eq(StringUtils.isNotBlank(schoolCode), School::getSchoolCode, schoolCode) .eq(Objects.nonNull(greed) && greed != DEFAULT_GREED, School::getGreed, greed) .or() .eq(School::getGreed, DEFAULT_GREED); }); List schools = schoolMapper.selectList(lambdaQueryWrapper);

Entity: @Data @Builder @TableName("school") public class School implements Serializable { private static final long serialVersionUID = 7925637459659454410L;

@TableId(type = IdType.AUTO)
private Integer id;

@TableField("school_name")
private String schoolName;

@TableField("greed")
private Integer greed;

@TableField("del")
private Integer del;

@TableField("school_code")
private String schoolCode;

}

报错信息

Caused by: org.apache.ibatis.exceptions.PersistenceException:

Error querying database. Cause: com.cxyx.common.util.JsonUtil$JsonException: com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.cxyx.common.db.entity.MyBatisRequest["args"]->org.apache.ibatis.binding.MapperMethod$ParamMap["ew"]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["expression"]->com.baomidou.mybatisplus.core.conditions.segments.MergeSegments["normal"]->com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList[4]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["sqlSelect"])

The error may exist in com/didi/hyp/mybatis/mappers/SchoolMapper.java (best guess)

The error may involve com.didi.hyp.mybatis.mappers.SchoolMapper.selectList

The error occurred while handling results

SQL: SELECT id,school_name,greed,del,school_code FROM school WHERE (school_name = ? AND (school_code = ? OR greed = ?))

Cause: com.cxyx.common.util.JsonUtil$JsonException: com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.cxyx.common.db.entity.MyBatisRequest["args"]->org.apache.ibatis.binding.MapperMethod$ParamMap["ew"]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["expression"]->com.baomidou.mybatisplus.core.conditions.segments.MergeSegments["normal"]->com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList[4]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["sqlSelect"])

at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:30)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:149)
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)
... 87 more

Caused by: com.cxyx.common.util.JsonUtil$JsonException: com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.cxyx.common.db.entity.MyBatisRequest["args"]->org.apache.ibatis.binding.MapperMethod$ParamMap["ew"]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["expression"]->com.baomidou.mybatisplus.core.conditions.segments.MergeSegments["normal"]->com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList[4]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["sqlSelect"]) at com.cxyx.common.util.JsonUtil.asString(JsonUtil.java:530) at com.cxyx.common.util.JsonUtil.toString(JsonUtil.java:221) at com.cxyx.common.rpc.Context.asMap(Context.java:178) at com.cxyx.common.rpc.Context.end(Context.java:149) at com.cxyx.common.db.interceptor.QueryExecutorInterceptor.intercept(QueryExecutorInterceptor.java:76) at org.apache.ibatis.plugin.Plugin.invoke(Plugin.java:61) at com.sun.proxy.$Proxy122.query(Unknown Source) 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.$Proxy122.query(Unknown Source) at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:147) ... 93 more Caused by: com.fasterxml.jackson.databind.JsonMappingException: (was java.lang.NullPointerException) (through reference chain: com.cxyx.common.db.entity.MyBatisRequest["args"]->org.apache.ibatis.binding.MapperMethod$ParamMap["ew"]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["expression"]->com.baomidou.mybatisplus.core.conditions.segments.MergeSegments["normal"]->com.baomidou.mybatisplus.core.conditions.segments.NormalSegmentList[4]->com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper["sqlSelect"]) at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:394) at com.fasterxml.jackson.databind.JsonMappingException.wrapWithPath(JsonMappingException.java:353) at com.fasterxml.jackson.databind.ser.std.StdSerializer.wrapAndThrow(StdSerializer.java:316) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:727) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serializeContents(IndexedListSerializer.java:119) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:79) at com.fasterxml.jackson.databind.ser.impl.IndexedListSerializer.serialize(IndexedListSerializer.java:18) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.std.MapSerializer.serializeOptionalFields(MapSerializer.java:782) at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:639) at com.fasterxml.jackson.databind.ser.std.MapSerializer.serialize(MapSerializer.java:33) at com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:727) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) at com.fasterxml.jackson.databind.ser.BeanSerializer.serialize(BeanSerializer.java:155) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider._serialize(DefaultSerializerProvider.java:480) at com.fasterxml.jackson.databind.ser.DefaultSerializerProvider.serializeValue(DefaultSerializerProvider.java:319) at com.fasterxml.jackson.databind.ObjectMapper._configAndWriteValue(ObjectMapper.java:3905) at com.fasterxml.jackson.databind.ObjectMapper.writeValueAsString(ObjectMapper.java:3219) at com.cxyx.common.util.JsonUtil.asString(JsonUtil.java:528) ... 106 more Caused by: java.lang.NullPointerException at com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper.getSqlSelect(LambdaQueryWrapper.java:114) 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 com.fasterxml.jackson.databind.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:688) at com.fasterxml.jackson.databind.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:719) ... 127 more

Comment From: miemieYaho

不支持序列化