我正在使用 Spring Data REST 来公开我的实体及其关系。我在两个实体之间有一对一的关系,并且我正在尝试更新/更改与 PUT 和 PATCH 的关系。
我注意到 Spring Data REST 只允许您更新链接资源 -JPA 映射的实体(OneToMany、ManyToOne 等)也是 AggregateRoots(具有存储库)- 通过PATCH并被忽略PUT.
这可以在LinkedAssociationSkippingAssociationHandler https://github.com/spring-projects/spring-data-rest/blob/master/spring-data-rest-webmvc/src/main/java/org/springframework/data/rest/webmvc/json/DomainObjectReader.java#L569 class:
if (associationLinks.isLinkableAssociation(association)) {
return;
}
为什么是这样?这背后的原因是什么?
是因为设计希望我们将关联本身视为资源吗?这部分文档 https://docs.spring.io/spring-data/rest/docs/current/reference/html/#repository-resources.association-resource?我可以通过带有 Content-Type text/uri-list 的 PUT 来更改关系,但感觉不自然并且需要额外的 HTTP 请求。
从 Spring 数据 REST 2.5.9.RELEASE 开始,关联不会根据 PUT 请求进行更新,仅使用 PATCH 进行更新。
版本2.5.9.RELEASE的变化(2017-04-19) https://docs.spring.io/spring-data/rest/docs/current/changelog.txt
DATAREST-1030-PATCH 请求无法正确处理关联链接。 https://github.com/spring-projects/spring-data-rest/commit/359513fe9bdcd679f1ff0b1154d65b973201b800#diff-63e4af7a7a88565be2f1494ede2de7ab
关于此的其他链接:
DATAREST-1061:具有 application/json 媒体类型负载的 PUT 请求无法通过 URI 更新关联 @OneToOne https://jira.spring.io/browse/DATAREST-1061
领域驱动设计和 Spring https://github.com/olivergierke/lectures/blob/master/ddd-and-spring/index.adoc#domain-driven-design-and-spring
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)