hibernate - 如何使用字段将属性注释为枚举

时间:2009-10-27 21:04:08

标签: hibernate enums annotations

如何在枚举中添加字段?

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存储在数据库中。请提出解决方案。

2 个答案:

答案 0 :(得分:3)

在Hibernate中没有内置的方法可以做到这一点。如果需要,您可以写一个UserType来为您完成。

This是一个好的开始,但您需要替换nullSafeSet()nullSafeGet()实现来存储您的枚举代码(例如'H'/'C'/你有什么并基于它返回适当的枚举实例。

如果您有多个枚举类型需要执行此操作,则可以实现ParameterizedType接口以将枚举类型作为参数传递,或者使用反射来检索“代码”,只要访问器方法的命名一致

答案 1 :(得分:0)

谢谢ChssPly76的解决方案。我实现了一个用户类型,它运行良好。事实上,hibernate社区中有一个例子可以在枚举中保留值/令牌。 Click here: StringValuedEnum

相关问题