【问题标题】:Hibernate: mapping enum with dashHibernate:用破折号映射枚举
【发布时间】:2013-07-23 14:32:02
【问题描述】:

我在数据库中有一个包含 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]

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

【问题讨论】:

标签: java hibernate enums


【解决方案1】:

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

您将不得不使用另一种类型。 In this answer you will get the required info.

【讨论】:

    【解决方案2】:

    你有没有在你的模型中尝试过这个

    @Enumerated(EnumType.STRING) 状态状态

    【讨论】:

    • 是的,它适用于其他枚举,但对于这个带有破折号的枚举,它会失败。
    • 这将失败。因为您需要在 DB 中具有与枚举相同的值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2011-02-03
    • 2018-04-11
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多