这是使用Enum将其持久保存在数据库中的正确方法吗?

时间:2015-06-23 10:00:07

标签: java database jpa enums one-to-many

所以,我有一个类(实体)与枚举(另一个实体)具有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的表?

1 个答案:

答案 0 :(得分:1)

不,这没有多大意义。首先是因为该关联可能不是OneToMany,而是ManyToMany:给定的枚举可能包含在MyClass的几个实例中。

第二,因为,如果那真的是你想要的,为什么你会使用String作为枚举包装器的ID而不是使用枚举本身呢?

最后,除非你真的想要一个只包含枚举实例的表,否则你可以简单地使用一个元素集合:

@Entity
class MyClass {
    @Id
    int id;

    @ElementCollection
    Set<MyEnum> myEnums = new HashSet<>();
}