2016-05-13 42 views
0

所以我具有一個實體bean的Enum的屬性:如何將Enum值作爲字符串與Hibernate存儲到SQL Server?

@Entity 
@Table(name = "fileAttachment") 
public class FileAttachment 

// other properties.. 

@Enumerated(EnumType.STRING) 
FileAttachmentType type; 

// getters and setters 

然而,當我堅持的豆,在該列中的值被示出爲一個數字,如0或1或2。

如果我println enum的值保持與EntityManager之前持續bean,值打印爲字符串,如INVOICE但在SQL Server表中該行的值爲2,例如在fileAttachmentType列。我還需要配置什麼?我認爲EnumType.STRING會做到這一點。

回答

1

你是在DB中自己創建表還是依賴Hibernate? 如果首先確保列類型適合存儲字符串。 如果第二次嘗試使用註釋像

@Column(columnDefinition = "enum('VALUE1','VALUE2')") 
+0

它由我在由LiquiBase運行的SQL腳本中創建。我發佈了一個答案,我如何修復它。感謝您的建議 –

0

好了,在這種情況下,事情的來龍去脈時,我添加了註解:@Enumerated(EnumType.STRING)

到該字段的getter和不給實際領域。 在另一個項目中,當註釋在現場而不在其他任何地方時,它就起作用了......所以,就我所瞭解的來說,答案是「出於某種原因」的古老答案,但它現在可行。

如果有人會評論這個原因,我會更新答案。

編輯:原因被發現。該Entity類中的getter已經有了一個註釋。這就是爲什麼字段上的註釋不起作用的原因。恰巧是這樣,你應該只在字段上註釋或僅在獲取者上註釋。兩者都沒有註釋。

相關問題