JPA Тип каскада Hibernate для дочернего элемента дочернего элемента

Я искал документацию или отвечал, как каскад будет работать для дочернего элемента 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»?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
1 043
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Если вы сохраняете своего родителя, сохраняются только те дочерние элементы, которые находятся в дочернем списке вашего родительского класса, но не список AnotherChilds в вашем дочернем классе.

Если вы хотите сохранить их тоже, просто каскадируйте их:

public class Child{
     @OneToMany(mappedBy = "child", cascade = CascadeType.PERSIST)
     private List<AnotherChild> anohterChild;

     @ManyToOne
     private Parent parent;
}

И просто используйте CascadeType.ALL, когда он вам действительно нужен, потому что этот каскадный тип включает больше, чем просто сохранение. Как поясняется на следующем рисунке, CascadeType.ALL включает в себя все другие каскадные типы, включая каскадный тип «remove», что означает, что, когда ваш родительский объект удаляется, все остальные дочерние объекты также удаляются.

Спасибо за ответ, мне нужно подождать еще время, чтобы увидеть больше ответов

Mohammad Karmi 24.03.2018 21:00

Что вам нужно?

watchme 24.03.2018 21:36

Просто добавьте: - CascadeType.REFRESH: означает, что дочерние элементы родительского элемента не будут вставлены, если родительский элемент вставлен, но они будут обновлены, если родительский элемент обновляется (т.е. все сущности находятся в постоянном режиме)

NiLInfinite 03.12.2018 23:10

Другие вопросы по теме