我尝试将字符串值映射到sql enum,但是我收到错误:
Caused by: org.postgresql.util.PSQLException: ERROR: column "state" is of type double_state, and the expression - character varying
我使用以下代码:
.hbm.xml映射条目
<property name="state" type="helper.entity.util.DoubleStateUserType">
<column name="state" not-null="true"/>
</property>
以下UserType实现nullSafeSet函数:
@Override
public void nullSafeSet(PreparedStatement preparedStatement, Object value, int index,
SessionImplementor session) throws HibernateException, SQLException {
if (null == value) {
preparedStatement.setNull(index, Types.VARCHAR);
} else {
preparedStatement.setString(index, (String) value);
}
}
表中的state列是两个值的枚举。
答案 0 :(得分:0)
试试这个
<property name="state" column="state" not-null="true">
<type name="org.hibernate.type.EnumType">
<param name="enumClass">helper.entity.util.DoubleStateUserType
<param name="type">12
</type>
</property>
默认情况下,当没有指定'type'参数时,Hibernate将枚举值保存为数据库中的整数,我们需要将枚举显示名称存储在数据库中,这样我们就可以将它映射到12,这相当于java.sql.Types .VARCHAR。