Java Hibernate枚举抛出枚举类的未知名称值[true]
我使用的是MySQL,我有一个列数据类型为Enum,我在实体中定义了一个Enum类型,但是当查询执行以检索数据时,它会引发以下异常:Java Hibernate枚举抛出枚举类的未知名称值[true],java,spring,hibernate,enums,hibernate-mapping,Java,Spring,Hibernate,Enums,Hibernate Mapping,我使用的是MySQL,我有一个列数据类型为Enum,我在实体中定义了一个Enum类型,但是当查询执行以检索数据时,它会引发以下异常: Caused by: java.lang.IllegalArgumentException: Unknown name value [true] for enum class [com.myproject.MyEnum] at org.hibernate.type.EnumType$NamedEnumValueMapper.fromName(EnumTyp
Caused by: java.lang.IllegalArgumentException: Unknown name value [true] for enum class [com.myproject.MyEnum]
at org.hibernate.type.EnumType$NamedEnumValueMapper.fromName(EnumType.java:467)
at org.hibernate.type.EnumType$NamedEnumValueMapper.getValue(EnumType.java:452)
at org.hibernate.type.EnumType.nullSafeGet(EnumType.java:107)
以下是我的实体和枚举源
public enum MyEnum {
TRUE("true"),
FALSE("false");
private final String name;
private MyEnum (String name){
this.name = name;
}
public String toString(){
return name;
}
}
在我的表结构中,我定义了enum{true,false}
@Entity
@Table(name="networthcashother")
public class Networthcashother {
@Id
@Column(name="id")
@GeneratedValue(strategy=GenerationType.IDENTITY)
private int id;
private String assetName;
private String assetDescription;
@Enumerated(EnumType.STRING)
private MyEnum married;
public MuEnum getMarried() {
return married;
}
public void setMarried(MyEnum married) {
this.married = married;
}
}
但是,如果我将实体属性类型从Enum更改为boolean,它就可以正常工作。我做错了什么。枚举类型.字符串将使用
Enum
字符串表示,这意味着它将调用:
- toString()-将
转换为枚举
表示时字符串
- -将
表示转换回字符串
枚举
valueOf()
,因此默认实现将使用name()
返回的值
要修复此问题,需要将以下静态方法添加到枚举中:
public static MyEnum getEnum(String value) {
for(MyEnum v : values())
if(v.getValue().equalsIgnoreCase(value)) return v;
throw new IllegalArgumentException();
}
何时调用此方法?它是在将字符串转换为枚举时进行的隐式调用,还是我必须进行此调用?