Я замечаю довольно своеобразное поведение с репозиторием ReadOnly и спрашиваю, не сталкивался ли кто-либо с подобной проблемой.
Я создал интерфейс репозитория только для чтения, как упомянуто в документации по SDR.Как видите, тело класса является просто копией встроенного CrudRepository с сохранением только методов GET.
MyReadOnlyRespository.java
@NoRepositoryBean
public interface MyReadOnlyRespository<T, ID extends Serializable> extends Repository<T, ID>{
Optional<T> findById(ID id);
boolean existsById(ID id);
Iterable<T> findAll();
Iterable<T> findAllById(Iterable<ID> ids);
long count();
}
А вот UserRepostiory, расширяющий пользовательское хранилище только для чтения.
UserRepository.java
@RepositoryRestResource(path="users", collectionResourceRel="users")
public interface UserRepository extends MyReadOnlyRespository<User, Integer> {
}
В этой конфигурации при доступе к http://localhost:8080/services/users, Я вижу следующий ожидаемый ответ.
{
"_embedded": {
"users": [
{
....
"_links": {
"self": {
"href": "http://localhost:8080/services/users/1"
},
"user": {
"href": "http://localhost:8080/services/users/1"
}
}
}
]
},
"_links": {
"self": {
"href": "http://localhost:8080/services/users"
},
"profile": {
"href": "http://localhost:8080/services/profile/users"
}
}
}
Но когда я пытаюсь получить доступ к конкретному пользователю с помощью URL-адреса, я получаю сообщение об ошибке «метод не поддерживается».http://localhost:8080/services/users/1.
Но если я расширяю свой UserRepository из встроенного CrudRepository вместо пользовательского MyReadOnlyRepository, вышеуказанный URL-адрес для конкретного пользователя дает ожидаемый ответ.Так что же дает?Почему происходит сбой в пользовательском репозитории?