在我的MySQL数据库中,有"性别枚举('男性','女性')"
我创建了我的枚举"com.mydomain.myapp.enums.Gender",在我的Person实体中我定义了"性别性别".
现在我想在我的MySQL数据库中保留枚举类型,但是当我启动我的应用程序时,我得到:
MyApp.Person中的列类型为Sex的列错误.找到:枚举,预期:整数
为什么是这样?这就好像我用"@Enumerated(EnumType.ORDINAL)"注释了我的"性别性别",我没有.EnumType似乎只能是ORDINAL或STRING,那么如何指定它应该将字段视为枚举,而不是int?(并不是说有太大的不同,但足以让它对此感到不安.)
像往常一样,Java枚举类型具有相应的代码和名称描述.包含此类字段的Java类将它们包含为Enum:
public enum MyEnum{
SOMEINSTANCE(1, "test1"),
SOMEINSTANCE(2, "test2");
private final int code;
private final String name;
private MyEnum(int code, String name){
this.code = code;
this.name = name;
}
... helper getter for code and name
}
@Entity
puclic class EnumHolder{
private MyEnum myEnum;
}
Run Code Online (Sandbox Code Playgroud)
我是JPA的新手,但我希望有' myEnums'表,看起来像:
code int not null, name varchar(50) not null)
Run Code Online (Sandbox Code Playgroud)
在我的enumHolder表中,我希望有一个myEnumCode指向myEnums表的字段.
使用currenlty支持EnumType.ORDINAL和EnumType.STRING我认为不是一个好主意.
另一个问题.如何myEnums使用Java MyEnum类数据填写表格?你会怎么做?请最好的方法.
PS:这是我能提供的解决方案:
让我们假设有表myEnum与code和名称fields.Java MyEnum枚举,在问题中描述.enumHolder表需要myEnumCode引用 …