是否有一种方法来检查来自JPA查询的字符串是否为有效的自定义enum?



我有一个带有内部自定义enum字段的实体模型,如下所示:

@Entity
@Table(name = "TABLE_CUSTOM")
public class CustModel{
@Enumerated(EnumType.STRING)
@Column(name = "CUSTOM", length = 3, nullable = false)
private EnumCustom enumCustom;
}
public enum EnumCustom{
A, B, C, D, UNK;
}

//UNK代表UNKNOWN

在TABLE_CUSTOM表中,有一个列包含enumCustom字段的可能值,但在某些情况下,可能会出现一些无效的值(如E, F),在这种情况下,我想将该字段设置为UNK(未知)。是否有一种方法,通过在该字段上使用注释或类似的东西来解决这个问题?

你可以使用@PostLoad用正确的enum值填充第二个字段:

@Entity
@Table(name = "TABLE_CUSTOM")
public class CustModel{
// populated with database String value via ORM framework
private String enumDatabase;
private EnumCustom enumCustom;
@PostLoad
private EnumCustom enumCustom;
enumCustom = EnumCustom.valueOf(enumDatabase);
}
}

public enum EnumCustom{
A, B, C, D, UNK;
public static void fromValue(String enumDatabase) {
for(EnumCustom enumCustom : values()) {
if (enumCustom.name().equals(enumDatabase) {
return enumCustom;
}
}
return EnumCustom.UNK;
}
}

最新更新