Недавно я начал использовать 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
дляChild
class → Создайте все экземпляры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
.
Есть ли что-то, что я полностью пропустил? Я хочу, чтобы использовать каскадные функции базы данных, не теряя гибкости добавления новых детей на лету.
Спасибо за помощь.:)