Hibernate:使用破折号映射枚举

时间:2013-07-23 14:32:03

标签: java hibernate enums

我在数据库中有一个包含5个可能值的列。我想将此列映射为枚举字段。问题是这些值中的一些包含破折号。我试过这样的事情:

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]

有没有办法将包含破折号的值映射到枚举?

2 个答案:

答案 0 :(得分:0)

你在模特中试过这个吗

@Enumerated(EnumType.STRING) 状态状态

答案 1 :(得分:0)

toString()不起作用,因为枚举的评估基于public final String name()。因为这是最终的,你无法覆盖它。

您必须使用其他类型。 In this answer you will get the required info.