[英]java.util.TreeSet collection type not supported for custom wrapped enum type
I am trying to persist enum type to database. 我试图将枚举类型持久化到数据库。 while initializing SessionFactory object I got this error: 在初始化SessionFactory对象时出现此错误:
Initial SessionFactory creation failed.org.hibernate.AnnotationException: java.util.TreeSet collection type not supported for property: org.structure.business.Accountant.permissions 初始SessionFactory创建失败。org.hibernate.AnnotationException:属性org.structure.business.Accountant.permissions不支持java.util.TreeSet集合类型。
My wrapper for enum type: 我的枚举类型包装:
@Entity(name = "PERMISSION")
public class PermissionWrapper implements Serializable {
private static final long serialVersionUID = 9086935561465328054L;
@Id
@Enumerated(EnumType.STRING)
private Permission permission;
@Override
public boolean equals(Object obj) {
if (!(obj instanceof PermissionWrapper)) {
return false;
}
PermissionWrapper permission2 = (PermissionWrapper) obj;
return permission == permission2.getPermission();
}
...
}
Entity that uses wrapper: 使用包装的实体:
@Entity(name = "ACCOUNTANT")
public class Accountant extends NormalUser {
private String companyName;
@OneToMany
private TreeSet<PermissionWrapper> permissions;
...
}
Handler for storing unique wrapped enums: 用于存储唯一包装的枚举的处理程序:
public class Permissions {
private static TreeSet<PermissionWrapper> permissions;
static {
System.out.println("Initialization of permissions...");
setPermissions(initPermissionsTreeSet());
}
private static TreeSet<PermissionWrapper> initPermissionsTreeSet() {
TreeSet<PermissionWrapper> permissions = new TreeSet<>();
permissions.add(new PermissionWrapper(Permission.READ));
permissions.add(new PermissionWrapper(Permission.EDIT));
permissions.add(new PermissionWrapper(Permission.CREATE));
permissions.add(new PermissionWrapper(Permission.DELETE));
return permissions;
}
...
}
Use 采用
@OneToMany
private Set<PermissionWrapper> permissions;
In fact hibernate use its own implementation of collection. 实际上,hibernate使用自己的实现集合。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.