You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自动数据同步后Spring枚举映射异常:No enum constant报错原因排查

问题描述

我们项目中有一个已使用多年且未做任何修改的枚举类,该类通过JPA映射数据库表的某一列。当前枚举类定义如下:

public enum Company {
  ACME, CYBERDYNE, INGEN, MONSTERS_INC
}

对应的数据库表中有一个非空列,存储上述枚举值。今日完成自动数据同步后,系统抛出以下异常:

org.springframework.dao.InvalidDataAccessApiUsageException: No enum constant com.foo.bar.Company.
可能的原因
  • 自动数据同步过程中,数据库列新增了未在枚举类中定义的取值。比如同步进来WAYNE_ENTERPRISES这类枚举类里没有的内容,JPA尝试映射到Company枚举时找不到对应常量,触发异常。
  • 数据同步出现大小写不匹配。比如数据库被写入acme(小写),而枚举类里是ACME(大写),JPA默认严格匹配枚举名称,导致无法找到对应常量。
  • 数据同步时绕过了数据库非空约束,写入了空值或无效空白字符。比如同步脚本临时禁用约束后,写入空字符串或全空格内容,JPA解析时无法匹配任何枚举常量。
  • 枚举类的全类名(包路径)被修改,但数据同步的映射配置未同步更新,或者旧数据存储了基于旧全类名的枚举序列化值,导致加载时找不到对应枚举类。
  • 自动同步工具对枚举值做了额外格式转换,比如把MONSTERS_INC的下划线替换成空格变成MONSTERS INC,导致无法匹配枚举常量。

内容的提问来源于stack exchange,提问作者Alfergon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 15:09:50