2009-07-02 203 views
9

我有一个使用枚举的数据库表。这已经与hibernate(使用XML)一起工作了,我试图将它转换为注释,因为这是仍然使用xml表示法的最后一部分之一。带枚举的MySQL枚举

列定义:

enum('Active','Pending','Cancelled','Suspend') 

以下工作:

<property 
    name="status" 
    column="STATUS" 
    type="string" 
    not-null="true" /> 

这不起作用:

@Column(name = "status") 
public String status; 

注释风格导致在启动时出现以下异常: org.hibernate.HibernateException:在UserDTO for colum中错误的列类型n状态。发现:枚举,预期:varchar(255)

有什么办法让我强制接受一个字符串,因为它使用XML符号?

回答

18

我想通了。它应该是:

@Column(name="status", columnDefinition="enum('Active','Pending','Cancelled','Suspend')") 
public String status; 
+0

您的解决方案对于MySQL数据库至少是正确的,但对于测试中使用的H2数据库(例如自动模式创建)失败。看来这也不是100%可移植的,据我所知,PostgresSQL也存在问题(至少如果我们期望模式自动生成的话)。 – kornicameister 2015-08-04 07:30:57