【发布时间】:2015-04-25 03:21:11
【问题描述】:
我正在使用 Spring Data REST。我正在尝试从实体(项目)解除集合关联。即 - 项目的属性是 List 类型。我想从该List 中删除所有项目。
为此,我使用的是 DELETE 方法:
curl -X DELETE …/categories/54ea0bcf27a2fb1b4641083a/fixedParentCategories
这给了我一个405 Method not allowed 错误代码。但是,它适用于单值关联(当它不是List 类型时)。 documentation 明确将 DELETE 列为支持的关联方法。我想知道是否有办法解决这个问题。另外,我尝试使用带有空正文的PUT (Content-Type: text/uri-list),它给出了一个关于缺少请求正文的错误。此关联上的其他操作都运行良好 - 我可以将项目添加到此集合等。
我的实体如下所示:
@Document
public class Category {
@DBRef(lazy = true)
private List<Category> fixedParentCategories;
…
}
【问题讨论】:
-
文档还指出,对于非可选的关联返回 405。你的领域模型是什么样的?
-
@Document @Description("Category") public class Category { @Description("Fixed parent categories") @DBRef(lazy = true) private List
fixedParentCategories; } -
在原帖中添加了域对象
-
在测试这个时,我还观察到:- 项目(实体)上的 PUT(内容类型:应用程序/json)清除所有关联。我最终使用 PATCH 以便它们保留其价值。这是预期的吗?当然,我阅读了文档,该文档说当我只想更新请求正文 JSON 中提供的那些属性并保持其余部分不变时,我需要使用 PATCH。但这也适用于协会吗?
标签: rest spring-data spring-data-rest