我正在使用Spring Data REST来公开我的实体及其关系。我在两个实体之间有一个OneToOne关系,我正在尝试更新/改变与PUT和PATCH的关系。
我注意到Spring Data REST只允许你更新链接的资源 - JPA映射的实体(OneToMany,ManyToOne等),它们也是AggregateRoots(有一个存储库) - 通过 PATCH 并被 PUT 忽略。
这可以在LinkedAssociationSkippingAssociationHandler课程中看到:
if (associationLinks.isLinkableAssociation(association)) {
return;
}
这是为什么?这背后的原因是什么?
是不是因为设计要求我们将关联视为资源本身,如this part of the documentation所示?我可以通过带有Content-Type text / uri-list的PUT改变关系,但感觉不自然,需要额外的HTTP请求。
答案 0 :(得分:1)
从Spring数据REST 2.5.9.RELEASE中,关联不会在PUT请求上更新,只能使用PATCH进行更新。
<强> Changes in version 2.5.9.RELEASE (2017-04-19) 强>
DATAREST-1030 - PATCH requests do not handle links to associations properly.
关于此的其他链接: