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

MyBatis枚举转换异常:java.lang.IllegalArgumentException: No enum constant xxx.0

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

MyBatis枚举转换异常:java.lang.IllegalArgumentException: No enum constant xxx.0

问题原因:

MyBatis自带了2个枚举转换器:EnumTypeHandler和EnumOrdinalTypeHandler。没有指定的话默认会是使用EnumTypeHandler,会在Enum类型和String类型(枚举的值)之间互相转换,而当EnumTypeHandler无法转换时,就会报这个异常。

比如枚举性别:

public enum GenderType {

    
    MALE,
    
    FEMALE;

    @JsonCreator
    public GenderType fromValue(int value) {
        return values()[value];
    }

    @JsonValue
    public int toValue() {
        return this.ordinal();
    }
}

User表中的gender字段的定义:

`gender` tinyint(4) DEFAULT NULL COMMENT '性别,0男 1女'

UserMapper.xml





    
        
        
        
        
        
    

    
        SELECT * FROM USER WHERe id = #{id}
    


在查询时就会报错:

java.lang.IllegalArgumentException: No enum constant top.yanwind.mybatisdemo.enums.GenderType.0
	at java.lang.Enum.valueOf(Enum.java:238) ~[na:1.8.0_271]
	at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:49) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.type.EnumTypeHandler.getNullableResult(EnumTypeHandler.java:26) ~[mybatis-3.4.6.jar:3.4.6]
	at org.apache.ibatis.type.baseTypeHandler.getResult(baseTypeHandler.java:66) ~[mybatis-3.4.6.jar:3.4.6]
解决方法:

为gender字段,指定typeHandler即可!

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

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

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