Spring数据:枚举和存储库问题

Spring数据:枚举和存储库问题,spring,enums,spring-data,Spring,Enums,Spring Data,我正在使用Spring数据和存储库。我创建了一个带有枚举类型字段的实体,我声明了@Enumerated(EnumType.STRING),但我不得不创建一个返回字符串的方法getAuthority @Entity @Configurable public class BaseAuthority implements GrantedAuthority { @Enumerated(EnumType.STRING) @Column(unique = true) private

我正在使用Spring数据和存储库。我创建了一个带有枚举类型字段的实体,我声明了@Enumerated(EnumType.STRING),但我不得不创建一个返回字符串的方法getAuthority

@Entity
@Configurable
public class BaseAuthority implements GrantedAuthority {

    @Enumerated(EnumType.STRING)
    @Column(unique = true)
    private AuthorityType authority;

    @Override
    public String getAuthority() {
        return authority.toString();
    }

}
枚举如下所示:

public enum AuthorityType {
REGISTEREDUSER, ADMINISTRATOR;
}
在实体的存储库中,我创建了一个按权限类型查找的操作:

@Repository
public interface BaseAuthorityRepository extends JpaRepository<BaseAuthority, Long> {

    BaseAuthority findByAuthority(AuthorityType authority);

}
我曾经让操作接收字符串而不是AuthorityType,但这会生成运行时异常。 我可以将域权限的名称更改为authorityType,但我不喜欢这样


我做错什么了吗?如何删除警告?

我想您必须重命名该字段,但您可以以透明的方式执行此操作:

@Entity
public class BaseAuthority implements GrantedAuthority {
    private static final long serialVersionUID = 1L;

    @Enumerated(EnumType.STRING)
    @Column(unique = true, name = "authority")
    private AuthorityType authorityType;

    AuthorityType getAuthorityType() {
        return authorityType;
    }

    @Override
    public String getAuthority() {
        return authorityType.toString();
    }
}
并将您的存储库更改为

@Repository
public interface BaseAuthorityRepository extends JpaRepository<BaseAuthority, Long> {

    BaseAuthority findByAuthorityType(AuthorityType authority); 
}
@存储库
公共接口BaseAuthorityRepository扩展了JpaRepository{
BaseAuthority findByAuthorityType(AuthorityType authority);
}

我认为将字段保留为enum,只需更改列名就可以了。枚举将更易于在代码中使用。
@Repository
public interface BaseAuthorityRepository extends JpaRepository<BaseAuthority, Long> {

    BaseAuthority findByAuthorityType(AuthorityType authority); 
}