Java 无法从JPA实体在MySql中生成枚举类型
我正在使用JPA2.1。我想生成mysql枚举类型列,如:Java 无法从JPA实体在MySql中生成枚举类型,java,jakarta-ee,jpa,java-ee-7,Java,Jakarta Ee,Jpa,Java Ee 7,我正在使用JPA2.1。我想生成mysql枚举类型列,如:gender enum('male','female')。我的枚举类是 public enum Gender { MALE, FEMALE } 在JPA实体类中 @Enumerated private Gender gender;//generate int type column 及 有没有办法在MySql中生成枚举类型列?如果要在数据库中使用字符串枚举值,则列类型必须是基于数据库服务器的varcharbase。实际上,我不
gender enum('male','female')
。我的枚举类是
public enum Gender {
MALE,
FEMALE
}
在JPA实体类中
@Enumerated
private Gender gender;//generate int type column
及
有没有办法在MySql中生成枚举类型列?如果要在数据库中使用字符串枚举值,则列类型必须是基于数据库服务器的
varchar
base。实际上,我不清楚我想对mysql枚举类型列进行genrate
。但是,如果您想显示输出MALE
至MALE
,请参考以下内容:
public enum Gender {
FEMALE("female"), MALE("male");
private String label;
private Gender(String label) {
this.label = label;
}
public String getLabel() {
return label;
}
}
试算表
public static void main(String args[]) {
System.out.println(Gender.MALE)
}
输出:男性使用以下代码:
public enum Gender {
MALE, FEMALE;
}
@Enumerated(EnumType.STRING)
@Column(columnDefinition = "ENUM('User', 'Moderator', 'Admin')")
public Role role;
}
您可能想尝试一下-这不仅不能编译,而且它混淆了
性别
和角色
,因此无法回答问题,也无法解释任何内容。为什么人们会对此投赞成票?虽然这个例子放在一起很疏忽,但这是我能找到的唯一答案,它显示了如何使用JPA将枚举映射到实际的SQL枚举类型,而不是仅将枚举值存储在不安全的数字或字符串类型中。枚举类型ANSI兼容吗?enum是在标准SQL中定义的还是仅用于MySQL?在这种情况下:这个解决方案不是将@Entity
类(I asumePerson
或类似的东西)与DB表(以及DBMS)耦合在一起吗?
public enum Gender {
MALE, FEMALE;
}
@Enumerated(EnumType.STRING)
@Column(columnDefinition = "ENUM('User', 'Moderator', 'Admin')")
public Role role;
}