2017-02-09 86 views
0

我一直在尋找這樣的答案,因爲昨天,並沒有找到它成功。春季數據休息OneToMany POST JSON與兒童實體

你能同時保存一個實體與它的子實體嗎?根據我所看到的,實現它的方法是保存實體,按照響應中的鏈接添加子實體。有沒有辦法一次發佈它?

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

在上面的例子中,我們具有例如Person實體,它有一個OneToMany關係Address實體。我知道你節省了Person,從響應中獲得鏈接,並保存Address,但如果可能的話,一次性完成所有操作都很方便。我假設它不可能開箱即用,但我想在寫一個自定義控制器方法來處理它一次之前,我會問。

+0

如果我明白你想保存一個新的人與這裏的地址只使用一個操作保存像entitmamager.persist(人)?我認爲這樣做會很好,但每次你保存一個新的人時,都會爲此創建一個新地址! –

+0

不一定:包含id字段的PUT將更新現有地址。 –

回答

0

這將通過POST添加新的實體。對於編輯現有實體,如果包含所有數據並在JSON中公開ID,則也可以通過PUT請求工作。

例如

public class MvcConfiguration extends RepositoryRestConfigurerAdapter { 

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

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

PUT /人/ 123

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

我用的時候有過的嵌套和使用集合多個級別,但只有當子實體沒有自己的REST端點:我不知道如果這會對事情有任何影響的話。