实体:
@Entity
@Table(name = "table_name")
public class MyClass extends IdEntity {
private MyEnumType enumType;
@Enumerated(EnumType.ORDINAL)
public MyEnumType getEnumType() {
return enumType;
}
public void setEnumType(MyEnumType enumType) {
this.enumType= enumType;
}
}
Enum:
public enum MyEnumType {
DOG(11),CAT(13),BULL(20);
private int value;
private MyEnumType (int value) {
this.value= value;
}
public int getValue() {
return value;
}
public void setValue(int value) {
this.value= value;
}
}
主要代码:
//any code then ...
entity.setsEnumType(MyEnumType.CAT);
//...persist API
我想在数据库中保留cat的int值( 13 )(例如mysql)。但是在mysql中,enumType是( 1 ),是什么ORDINAL值。我想知道有没有办法通过JPA和spring ???
存储我的自定义值有这样的方式:
change "private MyEnumType enumType;" to "private **int** enumType;"
然后:
entity.setsEnumType(MyEnumType.CAT.getValue());
但我不喜欢这个。
答案 0 :(得分:1)
JPA 2.1允许以标准方式定义自定义类型。使用@Convert注释。有关解释,请参阅http://www.thoughts-on-java.org/2013/10/jpa-21-how-to-implement-type-converter.html,javadoc是不够的。
如果你还在使用JPA 2.0,那么Hibernate有一种定义custom types的专有方式。