Ответ 1
Это работает так, как было разработано. Проекция вычитания используется всякий раз, когда экземпляр целевого типа (UserModel
в вашем случае) используется внутри в предложении _embedded
. Таким образом, выдержка является своего рода предварительным просмотром, используемым везде, где сам ресурс не отображается, а указывается на него. Обычно это происходит из ресурсов коллекции или для ассоциаций.
Использование проекции вычитания по умолчанию в ресурсе элемента на самом деле не имеет смысла с другой точки зрения: вычитания - это просмотр только для чтения на каком-либо объекте домена. Если вы вернете это представление для ресурса элемента по умолчанию, как клиент узнает, какие данные он должен был отправить для обновления ресурса. Документ JSON, созданный для проекции выдержки, не может быть просто взят, изменен и использован для отправки запроса PUT
для обновления ресурса - по определению.
Если вы хотите применить проекцию к ресурсу элемента, заполните переменную шаблона projection
URI с именем проекции.
EDIT: если проекции не применяются, если вы вручную их выбираете, убедитесь, что InlineBusinessUserModelProjection
фактически зарегистрирован для общего использования. Убедитесь, что тип расположен в том же пакете или подпакетах UserModel
.. Или вручную зарегистрируйте проекцию через RepositoryRestConfiguration.projectionConfiguration().addProjection(…)
. Ручная настройка делает использование @Projection
для типа проекции устаревшим.
Подробнее об этой теме читайте в Spring справочной документации по данным REST.