Spring Data: перечисление и проблема с репозиторием
Я использую данные 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);
}
тем не менее, я получаю предупреждение:
Parameter type (AuthorityType) does not match domain class
property definition (String). BaseAuthorityRepository.java
раньше у меня была операция получения String, а не AuthorityType, но это создает исключение среды выполнения. Я мог бы изменить имя полевого органа на authorityType, но мне это не нравится.
Я делаю что-то неправильно? Как удалить предупреждение?
1 ответов
Я думаю, вам нужно переименовать поле, но вы можете сделать это прозрачным способом:
@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);
}