JPA/Hibernate:存储 EnumSets

问题描述 投票:0回答:1

我有一个 @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 的文章。

我也不想编写转换器 - 如果可能的话,它应该开箱即用。

spring-boot jpa enums enumset
1个回答
0
投票

EnumSet 是一个集合,应该像一个集合一样对待。

@ElementCollection
@CollectionTable(name = "rights", joinColumns = @JoinColumn(name = "myfile_id"))
@Enumerated(EnumType.STRING)
private Set<Right> rights;

重要提示: 对接口

Set
进行编程,并在 setter 和构造函数中使用实现
EnumSet

private Set<Right> rights;

public void setRights(EnumSet<Right> rights) {
    this.rights = rights;
}
© www.soinside.com 2019 - 2024. All rights reserved.