【问题标题】:How to map enum(with fields) to entity Column?如何将枚举(带字段)映射到实体列?
【发布时间】:2025-12-22 07:05:11
【问题描述】:
public enum TransStatus{
NOT_FOUND(12,"RNF"),
CREATED(43,"created");
private Integer statusCode;
private String statusCodeString;

TransStatus(Integer statusCode,String statusCodeString){
this.statusCode = statusCode;
this.statusCodeString = statusCodeString;
}
public Integer getStatusCode() {
return statusCode;
}
public String getStatusCodeString() {
return statusCodeString;
}
}

实体类如下:

@Enumerated(EnumType.STRING)
@Column(name="STATUS")
private TransStatus status;

有什么方法可以将我的实体中的 TransStatus 列映射到作为状态代码的枚举的整数值,例如,如果我的枚举值为 NOT_FOUND,实体中的 TransStatus 值应该是 12,

编辑请注意我有两个值枚举状态码,状态码字符串,我们想要的只是状态码,我们已经尝试使用“Ordinal”它打印枚举的整数值而不是我的示例中的状态码

【问题讨论】:

  • 使用@Converter注解并实现所需的转换器
  • 如果你放 { "status" : "NOT_FOUND" } 这将起作用,但是如果你想使用字符串 "created" 或 "RNF" 你可以转换或者你也可以创建一个 Sql Enum Type if您正在使用 Postgresql。

标签: java hibernate spring-boot jpa enums


【解决方案1】:

是的,您可以使用@Enumerated(EnumType.ORDINAL) 实现相同的目的。

查看这些示例。

map-enum-in-jpa-with-fixed-values

mapping-enum-types-with-hibernate-annotations

【讨论】: