Удаление потомков из @ OneToMany-ассоциации: CascadeType.ALL + orphanRemoval = true не работает
Мне трудно удалить детей из ассоциации OneToMany. Мои сущности:
<code>@Entity @Table(name = "PERSON") public class PersonEntity extends BaseVersionEntity<Long> implements Comparable<PersonEntity> { ... // bi-directional many-to-one association to Project @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "person", orphanRemoval = true) private final Set<ProjectEntity> projects = new HashSet<ProjectEntity>(); ... @Entity @Table(name = "PROJECT") public class ProjectEntity extends BaseVersionEntity<ProjectPK> { @EmbeddedId private ProjectPK id; ... // bi-directional many-to-one association to UdbPerson @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "PERSON_ID", nullable = false, insertable = false, updatable = false) private PersonEntity person; ... @Embeddable public class ProjectPK implements Serializable { // default serial version id, required for serializable classes. private static final long serialVersionUID = 1L; @NotNull @Column(name = "PERSON_ID") private Long personId; ... </code>
Моя неудачная попытка удалить ребенка:
<code>personEntity.getProjects().clear(); </code>
Это работает, но я не думаю, что это правильный подход:
<code>for (Iterator<ProjectEntity> iterator = personEntity.getProjects().iterator(); iterator.hasNext();) { ProjectEntity projectEntity = iterator.next(); projectDao.deleteEntity(projectEntity); iterator.remove(); } </code>
Что я здесь не так делаю?
Спасибо
Jonny