我可以通过OneToMany级联关系删除行数吗?

时间:2019-01-28 09:49:55

标签: java spring jpa

我在两个实体(例如父级和子级)之间有一个OneToMany关系,级联= CascadeType.ALL。

当我从“父母”中删除时,我得到了删除的父母数,但没有删除受影响的孩子。我可以拿那个号码吗?怎么样?

这是我正在做的事情的粗略想法:

@Entity
class Parent {

    @Id
    Integer id;

    String field;

    @OneToMany(mappedBy="parent", cascade=CascadeType.ALL)
    Set<Child> children;
}

@Entity
class Child {
    @ManyToOne
    Parent parent;
}

interface ParentRepository extendes CrudRepository<Parent, Integer> {
    Long deleteByField(String field);
}

我可以以某种方式让deleteByField返回受影响的行总数而不是仅返回父行吗?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案-将存储库修改为

interface ParentRepository extendes CrudRepository<Parent, Integer> {
    Set<Parent> deleteByField(String field);
}

这将返回所有已删除的Parent对象。然后,我可以浏览每个父级中的.children,以查看有多少个(分别)。

我担心这样做效率不高,因为它会检索所有对象,因此,如果有人有更好的主意,我想知道。