我正在使用Spring Data和Repositories。我创建了一个带有枚举类型字段的实体,我声明了@Enumerated(EnumType.STRING),但我不得不创建一个方法getAuthority返回一个String。
@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,但我不喜欢这样。
我做错了吗?如何删除警告?
答案 0 :(得分:18)
我想你必须重命名该字段,但你可以透明地进行:
@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);
}