SDR - репозиторий только для чтения и CrudRepository - PullRequest
0 голосов
/ 28 декабря 2018

Я замечаю довольно своеобразное поведение с репозиторием 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-адрес для конкретного пользователя дает ожидаемый ответ.Так что же дает?Почему происходит сбой в пользовательском репозитории?

...