1、使用jpa 的@enumerated 注解 ,可以直接将enum映射到数据库中。

但是value的值只有两种方式选择,一种是使用枚举的序号映射,一种是枚举的名称来映射。

如果想存入枚举中的自定义的值,则需要实现attributeconverter接口

2、实现attributeconverter接口方式

使用方式

补充: springboot | jpa 将java枚举映射为基本值类型

解决方法之一:

使用实体属性类型转换器attributeconverter

场景假设:

在代码中使用枚举类来映射用户性别(如下代码所示),在数据库中使用字符映射性别(m ,f),hibernate提供了attributeconverter解决上述场景的转换问题

user实体类定义如下,重点在 @convert(converter = genderconverter.class)注释

定义一个genderconverter的类,需要实现attributeconverter接口,实现converttodatabasecolumn和converttoentityattribute,作用是分别封装从实体类映射至数据库字段数值的逻辑和从数据库字段数值映射到代码实体类中的枚举类值。

测试

例外hibernate也提供其他的方法,如使用@enumerated注解,详情可阅读这篇文档

以上为个人经验,希望能给大家一个参考,也希望大家多多支持www.887551.com。如有错误或未考虑完全的地方,望不吝赐教。