2013-07-23 70 views
0

我在數據庫中有一列有5個可能的值。我想將此列映射爲枚舉字段。問題是這些值中的一些包含破折號。我試過這樣的事情:Hibernate:用破折號映射枚舉

public enum Status { 
    S1("S1"), S2("S2"), S3("S-3"), S4("S-4"), S5("S5"); 

    private final String text; 

    Status(String text) { 
     this.text = text; 
    } 

    @Override 
    public String toString() { 
     return this.text; 
    } 

但它不起作用。如果在數據庫中的行包含以短線值,我得到一個錯誤:

Unknown name value [S-3] for enum class [test.package.Status] 

有什麼辦法來映射含有幾許枚舉值?

+0

[將枚舉映射到帶有hibernate註釋的表](http://stackoverflow.com/questions/735732/mapping-enum-to-a-table-with-hibernate-annotation) –

回答

0

了toString()這一個作爲枚舉的評估是基於public final String name()不起作用。因爲這是最終的,你不能重寫它。

您將不得不使用另一種類型。 In this answer you will get the required info.

+0

謝謝,它解決了這個問題。 – martaj

0

具有u試圖在你的模型

@Enumerated(EnumType.STRING) 狀態狀態

+0

是的,它適用於其他枚舉,但對於這個破折號失敗。 – martaj

+0

這會失敗。因爲您需要在DB中擁有與枚舉相同的值。 –