Spring数据休息OneToMany POST JSON与子实体

时间:2017-02-09 13:57:32

标签: spring spring-data spring-data-rest

自昨天以来,我一直在寻找答案,并没有成功找到答案。

您可以同时使用它的子实体保存实体吗?根据我所看到的,这样做的方法是保存实体,按照响应中的链接,然后添加子实体。有没有办法一次发布所有内容?

{
    "name": "some-name",
    "age": "30",
    "address": {
        "street": "some-street",
        "city": "some-city"
    }
}

在上面的示例中,我们有一个Person实体,它与OneToMany实体的关系Address。我知道您保存Person,从响应中获取链接,并保存Address,但如果可能的话,一次性完成所有操作会很方便。我假设它不可能开箱即用,但我想在编写一个自定义控制器方法之前我会先问一次。

1 个答案:

答案 0 :(得分:1)

这将适用于通过POST添加新实体。对于编辑现有实体,如果包含所有数据并在JSON中公开ID,这也可以通过PUT请求工作。

e.g。

public class MvcConfiguration extends RepositoryRestConfigurerAdapter {

    @Override
    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config) {
        super.configureRepositoryRestConfiguration(config);

        config.exposeIdsFor(/*Person.class,*/ Address.class);
    }
}

PUT / person / 123

{
    //"id" : 123, prob not required
    "name": "new-name",
    "age": "30",
    "address": {
        "id": 1, //required
        "street": "new-street",
        "city": "some-city"
    }
}

我已经使用了多个级别的嵌套和集合,但只有当子实体没有自己的REST端点时才会使用:我不确定这是否与事物有任何关系。