Я искал документацию или отвечал, как каскад будет работать для дочернего элемента child, например:
public class Parent{
@OneToMany(fetch = FetchType.EAGER,mappedBy = "parent",cascade = CascadeType.ALL)
private List<Child> child;
}
public class Child{
@OneToMany(mappedBy = "child")
private List<AnotherChild> anohterChild;
}
@ManyToOne
private Parent parent;
}
теперь вопрос, будет ли каскадная операция, примененная к "Child" из родительского класса, применяться к "AnotherChild"? другими словами, если я сохраню «Родительский» объект, сохранится ли он «AnotherChild»?




Если вы сохраняете своего родителя, сохраняются только те дочерние элементы, которые находятся в дочернем списке вашего родительского класса, но не список AnotherChilds в вашем дочернем классе.
Если вы хотите сохранить их тоже, просто каскадируйте их:
public class Child{
@OneToMany(mappedBy = "child", cascade = CascadeType.PERSIST)
private List<AnotherChild> anohterChild;
@ManyToOne
private Parent parent;
}
И просто используйте CascadeType.ALL, когда он вам действительно нужен, потому что этот каскадный тип включает больше, чем просто сохранение. Как поясняется на следующем рисунке, CascadeType.ALL включает в себя все другие каскадные типы, включая каскадный тип «remove», что означает, что, когда ваш родительский объект удаляется, все остальные дочерние объекты также удаляются.
Что вам нужно?
Просто добавьте: - CascadeType.REFRESH: означает, что дочерние элементы родительского элемента не будут вставлены, если родительский элемент вставлен, но они будут обновлены, если родительский элемент обновляется (т.е. все сущности находятся в постоянном режиме)
Спасибо за ответ, мне нужно подождать еще время, чтобы увидеть больше ответов