2013-07-23 73 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中拥有与枚举相同的值。 –