Jpa与Enumeration属性的关联,不是常量

时间:2014-04-16 17:14:20

标签: java jpa enums

是否有办法绑定Enum属性,而不是使用Jpa列枚举常量。

我有这样的枚举:

public enum Type{
   TYPE1("type1"),
   TYPE2("type2);

   private String enumValue;
   Type(String enumValue){
       this.enumValue = enumValue;
   }

   public String getValue(){
       return enumValue;
   }
}

和这样的实体:

public class TestEntity{    
    @Enumerated(EnumType.STRING)
    private Type type;   
}

我的实体总是与枚举常量绑定,即TYPE1而不是enumValue,即“type1”。我找不到办法做到这一点。我想知道甚至可以用JPA。

谢谢,

1 个答案:

答案 0 :(得分:0)

你可以使用hibernate-proprietary custom type(如果你使用Hibernate),或者如果你使用JPA 2.1实现,使用新的Convert annotation。这里的an article显示了一个示例

@Convert(converter = TypeConverter.class)
private Type type;

...

@Converter
public class TypeConverter implements AttributeConverter<Type, String> {

    @Override
    public String convertToDatabaseColumn(Type attribute) {
        return attribute.getValue();
    }

    @Override
    public Type convertToEntityAttribute(String dbData) {
        return Type.fromValue(dbData);
    }
}