我有一个 @Entity 存储在数据库(MariaDB)中 - JPA/Hibernate 和 Spring-Boot。
@Entity
public class MyFile
{
public static enum Type { DIR, FILE, SYS };
public static enum Rights { R, W, X };
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Long id;
@NotNull
@Column (unique = false)
private String name;
@NotNull
@Column (unique = false)
@Enumerated (EnumType.STRING)
private Type t;
@NotNull
@Column (unique = false)
???
private EnumSet <Right> rights;
....
我添加了一个用于权限的 EnumSet(如位掩码)。
我不知道如何为 EnumSet 的 JPA 进行注释。找到有关简单枚举(如 Type)的文章,但没有找到有关 EnumSets 的文章。
我也不想编写转换器 - 如果可能的话,它应该开箱即用。
EnumSet 是一个集合,应该像一个集合一样对待。
@ElementCollection
@CollectionTable(name = "rights", joinColumns = @JoinColumn(name = "myfile_id"))
@Enumerated(EnumType.STRING)
private Set<Right> rights;
重要提示: 对接口
进行编程,并在 setter 和构造函数中使用实现Set
。EnumSet
private Set<Right> rights;
public void setRights(EnumSet<Right> rights) {
this.rights = rights;
}