Let's say I have two entites like
{code:java}@Table(name = "parent_entity") @Entity(name = "ParentEntity") public class ParentEntity extends PersistentEntity { @OneToOne(cascade = CascadeType.ALL) @JoinColumn(name = "inner_entity") private InnerEntity innerEntity = new InnerEntity();
public InnerEntity getInnerEntity() { return innerEntity; }
public void setInnerEntity(InnerEntity innerEntity) { this.innerEntity = innerEntity; } }
@Table(name = "inner_entity") @Entity(name = "InnerEntity") public class InnerEntity extends PersistentEntity { @OneToMany(mappedBy = "innerEntity", cascade = CascadeType.ALL, orphanRemoval = true) private List<ChildEntity> children = new ArrayList<>();
public List<ChildEntity> getChildren() { return children; }
public void setChildren(List<ChildEntity> children) { this.children = children; } }
@Table(name = "child_entity") @Entity(name = "ChildEntity") public class ChildEntity extends PersistentEntity { @ManyToOne @JoinColumn(name = "inner_entity") private InnerEntity innerEntity; @Column(name = "child_value") private String childValue;
public InnerEntity getInnerEntity() { return innerEntity; }
public void setInnerEntity(InnerEntity innerEntity) { this.innerEntity = innerEntity; }
public String getChildValue() { return childValue; }
public void setChildValue(String childValue) { this.childValue = childValue; } } {code}
When I call session.update with parent entity, orphanRemoval does not have any affect. It does not delete child entity and relationship between parent and child.
I have tried with 5.3.7.Final, 5.4.15.Final, 5.4.16.Final and 5.4.17 Final
Test Case can be found in attachment |
|