Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/385.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 带hibernate的MySQL枚举_Java_Hibernate - Fatal编程技术网

Java 带hibernate的MySQL枚举

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

我有一个使用枚举的数据库表。hibernate(使用XML)已经在使用它了,我正在尝试将它转换为注释,因为这是最后一个仍然使用XML表示法的部分

列定义:

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;