保存子资源Spring Data REST的最佳方法

时间:2016-05-06 11:03:13

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

我有两个实体:

@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 

1 个答案:

答案 0 :(得分:0)

首先,您创建了父实体并保存了它。

然后,您想要将新孩子绑定到您的孩子,您将在孩子创建请求中将以下内容

{
  "father.id": 1,
  "name":"SomeName"
}

当收到请求时,Spring会自动转换为父实体。