是否有办法绑定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。
谢谢,
答案 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);
}
}