Я новичок в Hibernate, и у меня есть следующий вопрос:
Говоря, у меня есть следующий сценарий:
@Entity
public class Parent(){
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
@Column(name = "PID")
private Long id;
@OneToOne(mappedBy = "Parent", cascade = CascadeType.ALL, fetch = FetchType.EAGER)
private Child child;
}
@Entity
public class Child()implements Serializable {
@Id
private Long id;
@OneToMany(
mappedBy = "child",
cascade = {CascadeType.ALL, CascadeType.PERSIST, CascadeType.MERGE},
orphanRemoval = true
)
private List<Grandchild> grandchilds;
@OneToOne(fetch = FetchType.EAGER, orphanRemoval = true, cascade = CascadeType.REMOVE)
@MapsId()
@JoinColumn(name = "PID")
@Cascade(org.hibernate.annotations.CascadeType.DELETE)
private Parent parent;
}
@Entity
@IdClass(GrandchildID.class)
public class Grandchild {
@Id
@Column(name = "AID")
private Long aid;
@Id
@Column(name = "GID")
@GeneratedValue(strategy = GenerationType.AUTO)
private Long gid;
@ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.ALL, CascadeType.PERSIST, CascadeType.MERGE})
@JoinColumn(name = "AID")
@MapsId("AID")
private Child child;
}
У меня есть вопрос:
Iзнаю, что hibernate может сохранить каскад данных.
Так что я могу сделать следующее:
for each grandchild{
grandchild.setChild(child);
}
child.setGrandChilds = (grandchilds);
child = childRepository.save(child);//which will save both child and grandchild.
parent.setChild(child);
parentRepository.save(parent)//which will save parent
Мой вопрос:
Зачем мне сначала сохранять ребенка?
С этой целью, поскольку спасение ребенка также автоматически спасет внука для меня, похоже, что Hibernate может сохранить оба для меня.Итак, почему я не могу просто сохранить родителя, чтобы в спящем режиме я мог автоматически сохранить ребенка и внука?Спящий режим только автосохранение только для ребенка (не для внука)?