天天看点

MybatisPlus查询报错:no enum constant “XXX“MybatisPlus查询报错:no enum constant “XXX”

MybatisPlus查询报错:no enum constant “XXX”

问题发生过程

1.首先,同事用mybatisX插件生成了实体类,直接推到了gitlab上,我更新了本地的代码,用到了这个实体类。

其中有部分应该是枚举的字段,插件生成的时候都是String类型。

2.然后我在写完更新和查询之后,使用postman进行测试。枚举类型的字段,传入了空字符串 “”,并更新到了数据库。

3.当同事将String改为枚举类型后,上传了代码,我更新之后,在查询的时候爆出了这个错误,我看网上有让修改mapper配置文件的,我觉的不太对劲。让大佬帮我看了看,大佬打了几个断点,看了一遍也没能看出来什么。

4.我突然想到了更新到库里的那几个空字符串,对!就是空串不能对应枚举的类型!即使该类型字段值为空,也应该设置为 null!

果然,将数据库里的空串恢复之后就没问题了。

原因

Java的enum中没有这个常量

解决方法

对于枚举类型字段,需要设置为枚举包含的常量,如无值,则为 null