В Spring остальные данные можно добавить вложенный объект @OneToMany в parent через POST /parent/{parentId}/nested?

У меня есть родительские и вложенные объекты. Я могу получить список вложенных, используя GET /parent/{parentId}/nested но я не могу POST/PUT к этому с успехом. По результату POST я получаю HTTP 204, а у parent есть пустой список вложенных объектов.

В логах вижу, что Hibernate ничего не вставляет в БД. Во время отладки я вижу, что Jackson Object Mapper для десереализации получаю "org.springframework.hateoas.Resources<java.lang.Object>"как JavaType.

Вот реальный пример моего POST:curl 'http://localhost:8000/api/users/402880e554b8f7960154b8f7adbc0000/orders/' -i -X POST -H 'Authorization: Basic OLOLO==' -H 'Accept: application/json' -H 'deviceCurrencyCode: USD' -H 'Content-Type: application/json; charset=UTF-8' -d '{"orderPrice": 0,"tax": 0,"shippingCost": 0,"credits": 0,"addresses": [{"firstName": "Figli","lastName": "Migli","zipCode": "5555","city": "Riga","country": "Tlmltr","phone": "7777","address": "Adddr"}],"status": "status"}'

Я знаю что можно сделать POST /nested '{"parent":"/link/to/parent"}', Но если это способ получить вложенные объекты над родителем, почему я не могу POST/PUT/PATCH их таким образом? Я проверил, это RESTfull, и, кажется, это так.

1 ответ

Решение

В документации остального источника данных есть раздел "Ресурс ассоциации", в котором рассказывается, что возможно на этом ресурсе. И создать нового ребенка и связать его невозможно.

Я не знаю, почему это так.

Единственный способ (я знаю), чтобы получить это поведение, это реализовать собственный контроллер, который сделает это за вас. (Убедитесь, что вы не используете @RequestMapping аннотации на уровне класса на вашем пользовательском контроллере, чтобы не перекрывать больше функций покоя пружинных данных, чем вы хотите)

Другие вопросы по тегам