所以,我有一个类(实体)与枚举(另一个实体)具有OneToMany关系
@Entity
class MyClass {
@Id
int id;
@OneToMany
List<MyEnumWrapper> myEnum;
}
public enum MyEnum {
VALUE1,
VALUE2
;
}
@Entity
public class MyEnumWrapper {
@Id
private String value;
public MyEnumWrapper(MyEnum value){
this.value = value
}
public MyEnum getValue {
return MyEnum.valueOf(value);
}
}
包装枚举只是为了在数据库中为它创建一个不同的表是否有意义?
编辑:我遇到了这个设计的问题。但是,我的要求是为枚举设置一个单独的表,因为它将与许多实体相关联。那么,有没有一种标准的方法来制作一个只有Enum的表?答案 0 :(得分:1)
不,这没有多大意义。首先是因为该关联可能不是OneToMany,而是ManyToMany:给定的枚举可能包含在MyClass的几个实例中。
第二,因为,如果那真的是你想要的,为什么你会使用String作为枚举包装器的ID而不是使用枚举本身呢?
最后,除非你真的想要一个只包含枚举实例的表,否则你可以简单地使用一个元素集合:
@Entity
class MyClass {
@Id
int id;
@ElementCollection
Set<MyEnum> myEnums = new HashSet<>();
}