使用spring数据休息后发布嵌套对象?

时间:2016-07-25 14:32:07

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

我最近开始在我的应用程序中使用spring-data-rest。我有以下JPA实体:

@Entity
public class Super {
    @Id
    private long id;

    @JoinTable
    @OneToMany(cascade = CascadeType.ALL)
    private List<Child> children;
}

-----------------------------------------

@Entity
public class Super2 {
    @Id
    private long id;

    @JoinTable
    @OneToMany(cascade = CascadeType.ALL)
    private List<Child> children;
}

-----------------------------------------

@Entity
public class Child {
    @Id
    private long id;

    @Column
    private String childMetadata;
}

我可以考虑保存SuperSuper2的新实例的两种方法:

  1. @RestResource课程公开Child - &gt;在创建ChildSuper - &gt;的实例之前创建Super2的所有实例在ChildSuper的有效负载中传递所有Super2个实例的网址。
  2. ChildSuper的有效负载中传递Super2的详细信息,而不会@RestResource Child类,CascadeType.ALL将会关心创建Child个实例。
  3. 这两种方法都有一些优点:

    1. 使用选项1,我可以通过ChildSuper的网址向Super2POST添加新的Child个对象http://<server>:<port>/super/1/children。但是如果我使用这种方法,我肯定会失去数据库的级联功能。
    2. 使用选项2,我获得了数据库的所有级联功能,但我失去了添加新Child实例的灵活性。
    3. 有没有我完全错过的东西?我想要一种方法来使用数据库的级联功能,而不会失去动态添加新子项的灵活性。

      感谢您的帮助。 :)

0 个答案:

没有答案