Post an entity with Spring Data REST which has relations

≯℡__Kan透↙ 提交于 2019-12-21 17:23:29

问题


I'm using Spring Data Rest. I have a problem trying to POST an object with association(e.g. address is a field in my entity that is mapped as many to one).

The question is, what format should we use to connect our new entity with its relations. I saw several answers and tried all options that I found. Unfortunately, all of them don't work for me. The following error happens:

Caused by: org.h2.jdbc.JdbcSQLException: NULL not allowed for column "ADDRESS_ID"; SQL statement:

JSON that I tried:

{
"name": "test",
"email": "test@email",
"address": "http://localhost:8080/MyApp/address/1"
}

Also tried these:

"address": {"id":"http://localhost:8080/MyApp/address/1"}

And this:

"address":{"id":1}

And even this:

"address": {
"href": "http://localhost:8080/MyApp/address/1"
}

Is there a way to do this, or only writing own implementation of controller for POST? Thanks!


回答1:


If you have a model like this:

@Entity
public class User {
    //..
    private String name;

    @OneToMany(mappedBy = "user")
    private Set<Address> addresses = new HashSet<>();
    //..
}

@Entity
public class Address {
    //..
    @ManyToOne
    private User user;
    //..
}

then you can POST a new User with its addresses like this:

POST http://localhost:8080/api/users
{
    "name" : "user1",
    "addresses" : [
        "http://localhost:8080/api/addresses/1",
        "http://localhost:8080/api/addresses/2"
        ]
}

Before POST a new User, addresses ID#1 and ID#2 must be already persisted.



来源:https://stackoverflow.com/questions/44497114/post-an-entity-with-spring-data-rest-which-has-relations

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!