Если вы хотите удалить AB и B, когда A будет удален, просто установите cascade remove, (и orphanRemoval = true, если вы хотите удалить удаленные экземпляры для удаления).
Если отношение от A до B поистине ManyToMany, то есть B может иметь несколько ссылок, тогда вы не можете каскадировать удаление в B (но все равно можете каскадировать до AB, убедитесь, что вы поддерживаете двунаправленные отношения в своей модели).
Нет способ удалить B, если с ним не будет никакого отношения. Это будет нечто вроде сбора мусора, которого нет в реляционных базах данных. Вам нужно обработать это из своего приложения. Если B - это то, что вы хотите удалить с помощью A, подумайте, не имея его общего, но у каждого A есть свой собственный экземпляр B.
Я полагаю, что вы работаете с 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);
Надеюсь, что эта помощь