我与三个表和实体有多对多的关系,并且连接表包含其他列。在关系的两边,我设置了cascadeType.All 当我向所有者方添加新对象时,merge方法工作正常,但是当我从所有者中删除子对象并将其合并时,连接表中相应的行将不会被删除,并且我将在那里有重复的行。
所有者实体
@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "definitionType")
private List<DefinitionProperty> definitionProperties = new ArrayList<DefinitionProperty>();
@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "property")
private List<DefinitionProperty> definitionProperties= new ArrayList<DefinitionProperty>();
映射实体
@Id
@JoinColumn(name = "dtid", referencedColumnName = "id")
@ManyToOne(optional = false)
private DefinitionType definitionType;
@Id
@JoinColumn(name = "prid", referencedColumnName = "id")
@ManyToOne(optional = false)
private Property property;
我根本没有调用我的实体管理器的remove方法,我期待级联自动删除不需要的行。那可能吗?我应该怎么做才能删除这些行? 如果有帮助,我可以在这里添加我的代码
答案 0 :(得分:0)
在所有者方面只需要orphanRemoval = true。