Какой будет наилучший подход (ы) JPA из соответствующего кода для сохранения значений для отношений ниже.
Предположим, у нас есть объекты, подобные приведенным ниже.
Отношения между объектами: родитель - первый уровень Child1 (второй уровень) зависит от Parent, Child2 (третий уровень) зависит от Parent и Child1.
@Entity
@Table(name = "PARENT") //all CRUD
public class Parent implements Serializable {
@Id
@Column(name = "SEQ_ID")
@GenerateValue(strategy = GenerateType.SEQUENCE)
private Long Id;
@OneToMany(mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true)
private List<Child1> childs1 = new LinkedList<>();
}
@Entity
@Table(nam = "CHILD1") //the same CRUD as Parent entity
public class Child1 implements Serializable {
@OneToOne (cascade = {CascadeType.?}) //MERGE, PERSIST, REFRESH?
@JoinColumn(name = "CHILD1_REF"
private Child2 child2;
@Id
@Column(name = "SEQ_ID")
@GenerateValue(strategy = GenerateType.SEQUENCE)
private Long Id;
}
@Entity
@Table(name = "CHILD2") //only create & read (could be update but not important)
public class Child2 implements Serializable {
@Column(name = "VALUE1")
private String value1;
@Column(name = "VALUE2")
private String value2;
@Id
@Column(name = "SEQ_ID")
@GenerateValue(strategy = GenerateType.SEQUENCE)
private Long Id;
}
Чего хотелось бы достичь:
- все операции для отношения между Parent и Child1, например, при удалении родительской сущности, наша сущность Child1 также должна быть удалена
- , тогда как сущность Child2 должна быть заблокирована только в том случае, если ее нет в базе данных (во время отслеживания Parent) и она не нужна. удалить Child2, если родитель удален
Любые java примеры? Что я должен изменить в своих классах сущностей и в псевдокоде ниже? (Я действительно не уверен, какой cascadeType следует использовать или пропустил что-либо).
EntityManager em = JpaManager.findEm()
if (parent.isNew()){
em.persit(parent);
} else {
em.merge(parent);
}
em.flush();