REST URI данных Spring против идентификатора объекта

Spring Data REST (и Spring HATEOAS в частности) отделяет RESTful ID (а именно, URI) от идентификаторов сущностей, и у меня возникают проблемы с их связью при сохранении новых объектов. Смотрите интересную дискуссию вокруг этого разделения вhttps://github.com/SpringSource/spring-data-rest/issues/13.

Предположим, что клиентское приложение хочет создать новыйTicket ресурс со связаннымTicketCategory ресурс. Я хочу опубликоватьTicket по отношению к удаленной конечной точке REST Spring Data.Ticket еще не имеет идентификатора, так как он новый.TicketCategory имеет идентификатор, но на клиенте это URI согласно обсуждению выше. Поэтому, когда я сохраняюTicketSpring Data REST передаетTicket в Spring Data JPA, которая ему не нравится: Spring Data JPA считает, чтоTicketCategory- не имеющий идентификатора объекта - является переходным:

org.hibernate.TransientPropertyValueException:
    Not-null property references a transient value -
    transient instance must be saved before current operation:
    com.springinpractice.ch13.helpdesk.model.Ticket.category ->
    com.springinpractice.ch13.helpdesk.model.TicketCategory

ОБНОВИТЬ: Документация на

https://github.com/SpringSource/spring-data-rest/wiki/JPA-Repository-REST-Exporter

имеет раздел «Обновление отношений», в котором описывается схема, использующая HTTP POST для установления отношений между сущностями. Я не знаю, является ли это единственным подходом, доступным в настоящее время, но кажется, что этот подход потребовал бы оставить ассоциацию нулевой на начальном посте, а затем обновить его до следующего поста. В вышеприведенном случае это было бы нежелательно, поскольку поле категории обязательно (@NotNull) для билетов.

Ответы на вопрос(2)

Ваш ответ на вопрос