Spring 数据: Enumeration and Repository issue

标签 spring enums spring-data

我正在使用Spring数据和存储库。我创建了一个带有枚举类型字段的Entity,并声明了@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);

}

但是,我得到一个警告:
Parameter type (AuthorityType) does not match domain class 
property definition (String). BaseAuthorityRepository.java

我曾经让该操作接收一个String而不是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); 
}

关于 Spring 数据: Enumeration and Repository issue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25161241/

相关文章:

java - 如何用真实数据库表填充 h2 内存表?

spring - Jadira 用户类型时区

java 枚举 - 无法从 MyClass.Result 转换为 int

java - spring boot如何从自定义yml加载属性

基于 Spring session 的 javax 约束验证

visual-studio - 有没有办法在程序未运行时获取 Visual Studio 中枚举的整数值?

c++ - |= 和 &= 是如何工作的?

java - 使用Spring Data Gemfire时的@Region注释

java - Spring 数据 JPA 存储库不保存到数据库

java - 在 JPA 中保留 map