2009-07-02 206 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