Spring数据:枚举和存储库问题
我正在使用Spring数据和存储库。我创建了一个带有枚举类型字段的实体,我声明了@Enumerated(EnumType.STRING),但我不得不创建一个返回字符串的方法getAuthoritySpring数据:枚举和存储库问题,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
@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);
}