我正在使用播放框架2和ebean 我有这样的枚举,并将Integer 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
答案 0 :(得分:0)
如果这是代码的复制/粘贴,则在枚举定义中写为“ 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