我正在使用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/