Недавно я начал использовать 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;
}
Я могу вспомнить два метода сохранения новых экземпляров Super или Super2:
- Выделите
@RestResourceдляChildclass → Создайте все экземплярыChildперед созданием экземпляровSuperилиSuper2→ Передайте URL-адреса всех экземпляровChildв полезной нагрузкеSuperилиSuper2. - Передайте детали
Childв полезной нагрузкеSuperилиSuper2без выделения класса@RestResourceдляChild, аCascadeType.ALLпозаботится о создании экземпляровChild.
Есть несколько профи с помощью обоих методов:
- С опцией 1 я получаю возможность добавлять новые объекты
ChildкSuperилиSuper2только с помощьюPOSTс URL-адресом новогоChildдоhttp://<server>:<port>/super/1/children. Но я определенно теряю каскадную функциональность базы данных, если я использую этот метод. - С вариантом 2 я получаю все каскадные функции базы данных, но я теряю гибкость при добавлении новых экземпляров
Child.
Есть ли что-то, что я полностью пропустил? Я хочу, чтобы использовать каскадные функции базы данных, не теряя гибкости добавления новых детей на лету.
Спасибо за помощь.:)