栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

mybatis-plus EnumTypeHandler映射到错误的枚举类型

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

mybatis-plus EnumTypeHandler映射到错误的枚举类型

解决方法

删除resultMap中手动指定的typeHandler

不可行


可行


背景

mybatis-plus版本:3.4.3
spring-cloud版本:Hoxton.SR8

业务背景

前端需要很多下拉列表,这些下拉列表的值都是后端接口返回的;数据格式为:

{
  "EMPLOYEE": [
    {
      "label": "张三",
      "value": "code1"
    },
    {
      "label": "李四",
      "value": "code2"
    }
  ],
  "GROUP_CHAT": [
    {
      "label": "群聊1",
      "value": "group1"
    }
  ]
}

其中EMPLOYEE,GROUP_CHAT都是后端定义的枚举

public enum SimpleEnum{
	EMPLOYEE,
	GROUP_CHAT
}

数据库ResultMap对应的对象

public class SelectBO{
	private SimpleEnum type;
	private String label;
	private String value;

	// ..get set method..
}

数据库ResultMap


        
        
        
    
出现的问题
org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.executor.result.ResultMapException: 
Error attempting to get column 'select_type' from result set.  Cause: java.lang.IllegalArgumentException: No enum constant xxxs.MaterialTypeEnum.EMPLOYEE

这个错误只在线上出现(偶尔),本地启项目出现不了这个问题QWQ。

出现这个问题的根本原因在于,在项目启动阶段mybatis在初始化的过程中将枚举映射错了,我也是在把服务器代码弄下来,远程调试本地代码发现的

后来我将服务器代码里面的相应ResultMap对应xml的typeHandler去掉再启动项目就能解决问题

不可行


可行


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1003678.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号