没有删除orphanRemoval的实体

时间:2018-07-30 08:53:58

标签: java hibernate

我有一组实体,例如:

public class EntityToDrop {

    @NaturalId
    @ManyToOne(fetch = FetchType.EAGER)
    private ParentEntity parentEntity;

    @OneToMany(mappedBy = "entityToDrop", cascade = {CascadeType.REMOVE, CascadeType.REFRESH}, orphanRemoval = true)
    private Set<OtherEntity> otherEntities= new HashSet<>();

    [...] (other fields and relationships)
}

public class ParentEntity {

    @OneToMany(mappedBy = "parentEntity", cascade = CascadeType.ALL, orphanRemoval = true)
    private Set<EntityToDrop> childEntities = new HashSet<>();

    [...]
}

public class OtherEntity{

    @ManyToOne(optional = true,fetch = FetchType.EAGER)
    @NaturalId
    private EntityToDrop entityToDrop;
    [...]
}

在我正在调用的代码的一部分中

parentEntityInstance.getChildEntities().remove(entityToDrop);
[...]
entityManager.persist(parentEntityInstance);

我希望应该总是从数据库中删除entityToDrop,因为它已标记为orphanRemoval。但是,当与OtherEntity的关系存在时,它并不会被删除,更有趣的是,如果我删除与OtherEntity的关系,然后尝试在同一事务中将其从ParentEntity中删除,那就是也不会掉线。

在任何情况下,orphanRemoval = true都无法正常工作吗?作为后续工作,我如何确定在这种情况下阻止我的实体被移除的原因?

0 个答案:

没有答案