Spring Data Rest PUT 与 PATCH LinkableResources

2024-01-05

我正在使用 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(使用前将#替换为@)

Spring Data Rest PUT 与 PATCH LinkableResources 的相关文章

随机推荐

  • MongoRepository的saveAll()是批量插入数据吗?

    我想让保存操作高效 所以我想偶尔向 Mongo 写入大量对象 即超过某些容量时 Would saveAll 为我做那个吗 我应该使用BulkOperations反而 简短的回答 是的 但前提是所有文件都是新的 如果没有 就会一一插入或更新
  • 使用 min(width, height)/2 作为半径在 WPF 中绘制圆

    如何在 WPF 中 没有代码隐藏 使用绘制圆min width height 2作为半径 您可以在纯 XAML 中执行此操作 只需对值使用 Binding 即可 您还必须确保所有内容都已命名
  • 如何使用 Javascript 替换字符串中的大引号?

    我正在尝试替换大引号 str I don t know what you mean by glory Alice said Using str replace g 为什么它不起作用 我怎样才能做到这一点 您可能必须 或更愿意 使用 Unic
  • 如果值被禁用,则 Select 的值 = null

    我有 Select 并且所有值都被禁用 如何将值设置为此 Select
  • 线程实现

    我想知道如何实施我自己的线程库 我拥有的是CPU PowerPC架构 和C标准库 有没有我可以看看的开源轻量级实现 最简单的线程需要 一些内存用于堆栈空间 存储其上下文的地方 即寄存器内容 程序计数器 堆栈指针等 最重要的是 您需要实现一个
  • 启用 mod_deflate 发送 Content-Encoding: gzip

    EDIT我发现问题实际上是PHP 缩小 http code google com p minify 这是发送压缩的内容而不是 Apache 我会找到更多这方面的信息 根据高性能网站 http oreilly com catalog 9780
  • F# 命令行文件顺序?

    为什么参数的顺序对于 F 来说很重要 对于 C 使用相同的编译模型 来说并不重要 当我尝试这个时 main fs module Main let main Printer print repeatedly 5 hello world pri
  • Android studio 2.2.0-rc1 gradle插件错误

    我刚刚将 Android Studio 更新到该版本2 2 0 rc1安卓得到错误 找不到 com android tools build gradle 2 2 0 rc1 在以下位置进行了搜索 https jcenter bintray
  • 将gradle依赖添加到库aar包中

    我正在为供应商制作一个库项目 它需要 Android Volley 作为依赖项 我用过这个在Android Studio中创建aar文件 https stackoverflow com questions 24309950 create a
  • 如何使用 Jest 测试 useParam() 函数

    Getting this error while testing a component having a hook useParam I fixed it using below code jest mock react router d
  • 无法将名称“repository:repositories”解析为“类型定义”组件

    我在编写 applicationContext xml 时遇到异常 org springframework beans factory xml XmlBeanDefinitionStoreException Line 18 in XML d
  • OpenCV + GigE 视觉相机 +c++

    几天以来 我开始研究 Mako 相机 使用以太网 GigE 我需要取回视频流以将其集成到软件公司中 我尝试在 code blocks 上使用 OpenCV 库 但总是出现错误 指出它无法看到视频流 有人可以帮助我吗 非常感谢你的帮助 inc
  • Tkinter 方法执行后立即

    TKinter after 方法立即执行 执行后暂停 3 秒 如果我还在 CheckStatus 函数中使用 after 方法 它将进入快速循环并且永远不会到达 mainloop 我究竟做错了什么 文档说该函数将在暂停时间之后调用 但实际上
  • 修改Vite/Rollup中资产的构建路径?

    假设我有这个文件夹结构 parent parent html parent js child child html child js 我希望它们在我的 dist 文件夹中以相同的结构输出 默认情况下 这是获取输出的内容 dist asset
  • 如何使用 jQuery 获取具有特定 CSS 属性的第一个父级?

    我需要找到第一个拥有的父母position relative 类似于下面的示例 但我的真实内容将动态生成 div div div div div div 您知道使用 jQuery 执行此操作的简单方法吗 You can filter的集合p
  • iOS 5 中的表情符号和 UIWebView

    我注意到我的应用程序中的表情符号已停止在 iOS 5 中的 UIWebView 上正确显示 所有字符在显示时都会被编码为 HTML 并且输出 HTML 为 p Emoji iOS 4 55357 56850 p 此 UTF 8 编码的 HT
  • ipv6 向后兼容 ipv4 吗?

    我有一个使用 ipv4 编写的小 udp 示例程序 如果我将代码更改为 ipv6 我仍然能够与使用具有 ipv4 地址的侦听器的任何人进行通信吗 我正在查看移植示例 http ou800doc caldera com en SDK neta
  • 如何将 ZeroMQ 套接字与 Ratchet Web-socket 库绑定以实现 PHP 应用程序的实时应用程序?

    我只是涉及 websocket Ratchet 和 ZeroMQ 的整个领域的初学者 以我的基本理解 websocket有助于在服务器和客户端之间创建开放连接 Ratchet是一个基于 PHP 的库 它使用 PHP 的核心 Socket 函
  • 有人知道 Java 的邮件(SMTP)传递库吗?

    我想发送邮件而不用担心用于投递的 SMTP 服务器 So Java邮件API http java sun com products javamail 对我不起作用 因为我必须指定要连接的 SMTP 服务器 我希望图书馆通过查询邮件地址域的
  • Spring Data Rest PUT 与 PATCH LinkableResources

    我正在使用 Spring Data REST 来公开我的实体及其关系 我在两个实体之间有一对一的关系 并且我正在尝试更新 更改与 PUT 和 PATCH 的关系 我注意到 Spring Data REST 只允许您更新链接资源 JPA 映射