Spring Boot中包含枚举属性的Model对象无法保存的问题求助
Spring Boot中包含枚举属性的Model对象无法保存的问题求助
各位大佬好,我最近在项目里遇到个头疼的问题,折腾好半天都没搞定,特意过来请教下大家!
先跟大家说下我的技术栈环境:
- Spring Boot 3.4.3
- Spring Data JPA(底层用的Hibernate 6+)
- Spring Security 6+
- 数据库是PostgreSQL
我的实体类TestModel代码大概是这样的(刚才粘贴的时候没写完,我补全了关键部分):
@Getter @Setter @Entity @Table(name="test_model") public class TestModel { @Id @GeneratedValue(generator = "UUID") @UuidGenerator @Column(name = "id", updatable = false, nullable = false) private UUID id; // 就是这个枚举属性出的问题 @Column(name = "status") private TestStatus status; // 还有一些其他普通属性,比如名称、创建时间之类的 } // 对应的枚举类 public enum TestStatus { ACTIVE, INACTIVE }
具体问题是:当我用Spring Data JPA的save()方法尝试保存TestModel对象时,每次都失败。报错信息大概是Hibernate没法把枚举类型转换成数据库对应的字段类型,或者执行SQL时触发了类型不匹配的错误。
我已经试了好几种办法,但都没解决:
- 给枚举属性加了
@Enumerated(EnumType.STRING)注解,指定用字符串类型存储 - 检查过数据库里的
status字段,确实是varchar类型,长度也足够 - 确认了枚举的取值和要保存的对象里的status值完全对应,没有拼写或大小写问题
- 甚至试过自定义
AttributeConverter转换器手动处理枚举和数据库字段的转换,结果还是报错
有没有朋友遇到过类似的问题呀?或者Hibernate 6+有没有什么新特性是我没注意到的?麻烦大家帮我分析下可能的原因,或者给点排查方向,真的非常感谢!
备注:内容来源于stack exchange,提问作者java developer
相关产品推荐
相关产品推荐

