如何在枚举中添加字段?
public enum MyEnum{
HIGHSCHOOL ("H"), COLLEGE("C")
private int value;
public MyEnum getInstance(String value){...}
}
@Entity
public class MyEntity {
@Enumerated(...)
private MyEnum eduType;
}
如何注释,以便值H,C将保留在数据库中?如果我保留@Enumerated(EnumType.STRING)
,则HIGHSCHOOL而不是H将存储在数据库中。如果我使用EnumType.ORDINAL
,则1将代替H存储在数据库中。请提出解决方案。
答案 0 :(得分:3)
在Hibernate中没有内置的方法可以做到这一点。如果需要,您可以写一个UserType来为您完成。
This是一个好的开始,但您需要替换nullSafeSet()
和nullSafeGet()
实现来存储您的枚举代码(例如'H'/'C'/你有什么并基于它返回适当的枚举实例。
如果您有多个枚举类型需要执行此操作,则可以实现ParameterizedType接口以将枚举类型作为参数传递,或者使用反射来检索“代码”,只要访问器方法的命名一致
答案 1 :(得分:0)
谢谢ChssPly76的解决方案。我实现了一个用户类型,它运行良好。事实上,hibernate社区中有一个例子可以在枚举中保留值/令牌。 Click here: StringValuedEnum