Java 带hibernate的MySQL枚举
我有一个使用枚举的数据库表。hibernate(使用XML)已经在使用它了,我正在尝试将它转换为注释,因为这是最后一个仍然使用XML表示法的部分 列定义:Java 带hibernate的MySQL枚举,java,hibernate,Java,Hibernate,我有一个使用枚举的数据库表。hibernate(使用XML)已经在使用它了,我正在尝试将它转换为注释,因为这是最后一个仍然使用XML表示法的部分 列定义: enum('Active','Pending','Cancelled','Suspend') 以下工作: <property name="status" column="STATUS" type="string" not-null="true" /> 注释样式在启动时会导致以下异常: org.h
enum('Active','Pending','Cancelled','Suspend')
以下工作:
<property
name="status"
column="STATUS"
type="string"
not-null="true" />
注释样式在启动时会导致以下异常:
org.hibernate.hibernateeexception:UserDTO中列状态的列类型错误。找到:枚举,应为:varchar(255)
我有没有办法强迫它接受一个字符串,就像它使用XML表示法那样?我明白了。应该是:
@Column(name="status", columnDefinition="enum('Active','Pending','Cancelled','Suspend')")
public String status;
您的解决方案至少对MySQL数据库是正确的,但对测试中使用的H2数据库(例如,自动创建模式的情况)是失败的。这似乎不是100%可移植的,据我记忆所及,PostgresSQL上也有问题(至少如果我们预期该模式会自动生成的话)。它也适用于我。我有一个额外的注释
@Enumerated(EnumType.STRING)
,但它导致了一个错误被注释为Enumerated,但它的java类型不是enum[java.lang.STRING]
@Column(name="status", columnDefinition="enum('Active','Pending','Cancelled','Suspend')")
public String status;