Lij*_*cob 2 rest spring-data spring-data-rest
我正在使用Spring Data REST。我正在尝试从实体(项目)取消绑定关联。即-该项目的属性是List类型。我要从中删除所有项目List。
为此,我使用DELETE方法:
curl -X DELETE …/categories/54ea0bcf27a2fb1b4641083a/fixedParentCategories
Run Code Online (Sandbox Code Playgroud)
这给我一个405 Method not allowed错误代码。但是,它适用于单值关联(当它不是List类型时)。该文档明确列出DELETE了受支持的关联方法。我想知道是否有解决办法。另外,我尝试将PUT(Content-Type:text / uri-list)与一个空的正文一起使用,它给出了有关缺少请求正文的错误。此关联上的其他操作都可以正常工作-我可以向该集合中添加项目,等等。
我的实体看起来像这样:
@Document
public class Category {
@DBRef(lazy = true)
private List<Category> fixedParentCategories;
…
}
Run Code Online (Sandbox Code Playgroud)
我刚刚检查了代码,您是对的,我们正在积极拒绝DELETE对Maps和collection的请求。基本原理如下:
属于Map或集合的关联绝不能null在域模型中。将其转换为HTTP资源意味着资源将始终可用,并且在最坏的情况下返回空表示(空JSON数组或空JSON对象)。DELETE逻辑上null,接受请求将在域模型中建立关系,从而导致出现与第一个假设相矛盾的状态。
我们通常建议您简单地将一个媒体类型text/uri-list为空的实体放入关联资源,以清空关联,因为从语义上讲这是更正确的。将其视为像截断和删除数据库表之间的区别。
如果您认为情况会有所改变,并且有充分的理由可以支持您的请求,请随时在我们的JIRA中打开票证。
| 归档时间: |
|
| 查看次数: |
1812 次 |
| 最近记录: |