JPA Однонаправленное Множество удаленных объектов [duplicate]

0
задан Radim Köhler 10 June 2013 в 08:13
поделиться

2 ответа

Если вы хотите удалить AB и B, когда A будет удален, просто установите cascade remove, (и orphanRemoval = true, если вы хотите удалить удаленные экземпляры для удаления).

Если отношение от A до B поистине ManyToMany, то есть B может иметь несколько ссылок, тогда вы не можете каскадировать удаление в B (но все равно можете каскадировать до AB, убедитесь, что вы поддерживаете двунаправленные отношения в своей модели).

Нет способ удалить B, если с ним не будет никакого отношения. Это будет нечто вроде сбора мусора, которого нет в реляционных базах данных. Вам нужно обработать это из своего приложения. Если B - это то, что вы хотите удалить с помощью A, подумайте, не имея его общего, но у каждого A есть свой собственный экземпляр B.

2
ответ дан James 26 August 2018 в 00:49
поделиться

Я полагаю, что вы работаете с Hibernate, вы должны сделать orphanRoval = true,

после этого попробуйте это: предположим, что нам нужно удалить a (какой класс A), мы делаем:

 for (AB ab : a.getAbList()) {
    B b = ab.get();
    if (b.getAbList().size()==1) {
        em.remove(b);
   }
   em.remove(ab);
 }
 em.remove(a);

Надеюсь, что эта помощь

0
ответ дан ktaria 26 August 2018 в 00:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: