遵循此tutorial中提到的每个步骤,但仍然遇到以下异常:
Caused by: org.hibernate.MappingException: Unable to instantiate custom type: org.hibernate.type.EnumType
Caused by: java.lang.NullPointerException
at org.hibernate.type.EnumType.setParameterValues(EnumType.java:203) [hibernate-core-4.2.0.Final.jar:4.2.0.Final]
at org.hibernate.type.TypeFactory.injectParameters(TypeFactory.java:131) [hibernate-core-4.2.0.Final.jar:4.2.0.Final]
第2部分
然后我尝试使用@Enumerated
本身。将hbm更改为<property name="gender" column="usr_gender" not-null="true" type="org.hibernate.type.EnumType">
。
实体类:
import javax.persistence.Enumerated;
import javax.persistence.EnumType;
@Enumerated(EnumType.STRING)
Gender gender
仍然遇到同样的错误。
第3部分
将hbm属性更新为<property name="gender" column="usr_gender" not-null="true" type="string">
。
保持实体类相同。
回到过去的错误。
Expected type: Gender, actual value: java.lang.String
hbm文件
<property name="shortName" column="short_name" type="string" not-null="true"/>
<property name="description" column="description" type="string" not-null="true"/>
<property name="gender" column="gender_type" not-null="true" type="string"/>
实体类
import javax.persistence.Enumerated;
import javax.persistence.EnumType;
private String shortName;
private String description;
@Enumerated(EnumType.STRING)
private Tenant tenant;
答案 0 :(得分:0)
当我尝试为我的枚举字段创建自定义类型以将其作为SQLQuery的addScalar()
方法的类型参数时,我得到了相同的异常。目前尚不清楚代码的哪一部分会引发异常。但是,您似乎正在尝试创建一个自定义类型来克服异常,因为结果转换的枚举的setter方法参数不匹配。请参阅我对Hibernate SQL transformation fails for Enum type field的回答。