提问者:小点点

在jpa中使用联接表中的额外列进行多对多合并


我与三个表和实体有多对多关系,连接表包含额外的列。在关系的两边,我都设置了cascadeType。当我向所有者添加新对象时,合并方法工作正常,但是当我从所有者中删除一个子对象并合并它时,连接表中的相应行不会被删除,我将在那里有重复的行。

所有者实体

    @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方法,我希望级联能自动删除不需要的行。这可能吗?我应该怎么做才能删除这些行?如果有帮助,我可以在这里添加代码


共1个答案

匿名用户

它只需要所有者端的orphanRemoval=true。