使用Enum作为用户角色

时间:2020-06-12 21:45:08

标签: java hibernate jpa enums spring-data-jpa

我有一个用于用户和角色的实体:

@Entity
@Table(name="test")
public class Test implements Serialazable {
    ....
    @Column(length = 25)
    private String role;
    ..... 
}

我想使用此Enum来保存可用的类型:

public enum Role implements GrantedAuthority {
  ROLE_ADMIN, ROLE_CLIENT;

  public String getAuthority() {
    return name();
  }

}

问题是我如何才能使用此Enum插入所选的当前角色,以及如何从数据库中获取值并填充Enum。

您会指导我如何执行此操作,因为这对我来说还不是很清楚?

2 个答案:

答案 0 :(得分:0)

我举一个例子,您需要:

  • 创建一个枚举类
  • 创建一个转换器:

    @Converter(autoApply = true)
    public class RoleConverter implements AttributeConverter<Role, String> {
    
        @Override
        public String convertToDatabaseColumn(Role role) {
            return role.getRoleName();
        }
    
        @Override
        public Role convertToEntityAttribute(String dbData) {
            return Role.getFromShortName(dbData);
        }
    }
    

持久性提供程序将完成其余工作。

答案 1 :(得分:0)

在 JPA 中将枚举值映射到其数据库表示的最常见选项是使用 @Enumerated 注释。这样,我们可以指示 JPA 提供程序将枚举转换为其序数或字符串值。

这篇文章可以帮到你。

https://www.baeldung.com/jpa-persisting-enums-in-jpa