【问题标题】:How to map enum with ebean?如何用ebean映射枚举?
【发布时间】:2018-08-05 18:40:09
【问题描述】:

我正在使用 play framework 2 和 ebean 我有这样的枚举,并在数据库中保存整数 id

public enum Permission {
local$company$company_panel(2_001, "local.company.company_panel", "вход в компанийскую админку ")
Integer id;
String name;
String description;

Permission(Integer id, String name, String description) {
    this.id = id;
    this.name = name;
    this.description = description;
}

@DbEnumValue(storage = DbEnumType.INTEGER)
public Integer getId() {
    return id;
}

public String getName() {
    return name;
}

public String getDescription() {
    return description;
}

public static Permission findById(Integer id) {
    for(Permission permission : Permission.values()) {
        if(permission.getId().equals(id)) {
            return permission;
        }
    }
    return null;
}

}

那我有这个收藏了

@DbArray
@Column(name = "permissions")
private List<Permission> permissions = new ArrayList<>();

当我尝试从数据库中获取枚举时,我遇到了这样的错误: 引起:java.lang.IllegalArgumentException:没有枚举常量models.permission.Permission.2001

【问题讨论】:

    标签: playframework ebean


    【解决方案1】:

    如果这是您的代码的复制/粘贴,您在枚举定义中写了“2_001”而不是“2001”。

    更新:

    看看你的枚举是如何构造的,如果你想使用local$company$company_panel,看起来你有两种方法:

    Permission myPermission = Permission.local$company$company_panel
    

    Permission myPermission = Permission.getById(2001)
    

    如果您希望能够使用Permission.2001 访问它,您需要将其命名为2001 而不是local$company$company_panel

    【讨论】:

    • 我已将其更改为“2001”,它没有帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    • 2017-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多