我有两个实体:
@Entity
public class Father{
@Id
@GeneratedValue
private Long id;
private String name;
@OneToMany(mappedBy = "father",cascade = CascadeType.ALL, fetch = FetchType.LAZY)
private Set<Child> children;
// other
}
和
@Entity
public class Child{
@Id
@GeneratedValue
private Long id;
private String name;
@ManyToOne(fetch = FetchType.EAGER)
private Father father;
// other
}
通过使用Spring Data REST,我可以保存实体:
通过POST创建父亲
{
"name":"Father1"
}
然后通过POST http://localhost:8080/children/
创建子项{
"name":"Child1",
"father":"http://localhost:8080/fathers/1"
}
或者我可以保存两个独立的实体,并将给定URI指向的资源绑定到资源。
哪种方式最好? 我无法理解这一点:我可以通过以下方式将孩子添加到父亲身上:
curl -X PUT -H "ContentType: text/uri-list" http://localhost:8080/children/1 http://localhost:8080/fathers/1/children
答案 0 :(得分:0)
首先,您创建了父实体并保存了它。
然后,您想要将新孩子绑定到您的孩子,您将在孩子创建请求中将以下内容
{
"father.id": 1,
"name":"SomeName"
}
当收到请求时,Spring会自动转换为父实体。