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

com.baomidou mybatis-plus-boot-starter 3.4.2

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

1. 实体类的字段上加上注解,指定类型处理器
@TableField(typeHandler = EnumTypeHandler.class)
@ApiModelProperty(name = "操作类型", notes = "Action Category")
private ActionCategory actionCategory;
2. 数据库中有数据,数据正确,查询报错

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

问题在这一块,不同的枚举类型需要不同的EnumTypeHandler对象,这一块是没有区分哪种枚举,直接通过EnumTypeHandler类型获取的对象,里面的枚举类型不正确 MyBatis-Plus 字段上指定EnumTypeHandler,查询的时候报错 看一下mybatis里面是判断枚举类型做特殊处理的 MyBatis-Plus 字段上指定EnumTypeHandler,查询的时候报错

报错信息

MyBatis-Plus 字段上指定EnumTypeHandler,查询的时候报错

Comment From: miemieYaho

entity上加@TableName(autoResultMap = true)注解了吗?

Comment From: libin1990

entity上加@TableName(autoResultMap = true)注解了吗?

加了

Comment From: miemieYaho

如果查询是你自己写的xml那是不生效的,否则给出复现demo

Comment From: libin1990

如果查询是你自己写的xml那是不生效的,否则给出复现demo

不是自己写的xml,因为EnumTypeHandler特殊,应该是每种枚举类型需要一个EnumTypeHandler对象,@TableField(typeHandler = EnumTypeHandler.class)这种注解导致忽略了枚举类,去取了一个注册到TypeHandlerRegistry.allTypeHandlersMap的EnumTypeHandler对象,这个对象里面的type与当前枚举类不一致,导致转换报错。

Comment From: miemieYaho

你的程序没有个统一的枚举处理器?

Comment From: miemieYaho

升级你的版本,>=3.5.2