private void deleteFoodAssociations(Accompaniment root) { List<Food> foods = foodDAO.listByAccompanimentId(root.getId()); for (Food food : foods) { Collection<Accompaniment> accompaniments = accompanimentDAO.listByFoodId(food.getId()); Collection<Accompaniment> retainAll = new ArrayList<Accompaniment>(); for (Accompaniment accompaniment : accompaniments) { if (!accompaniment.getId().equals(root.getId())) { retainAll.add(accompaniment); } } accompaniments.retainAll(retainAll); food.setAccompaniments(new HashSet<Accompaniment>(accompaniments)); foodDAO.update(food); } root.setFoods(null); }