我能否获取通过一对多级联关系删除的行数



我在两个实体之间有一个OneToMany关系,比如父实体和子实体,cascade = 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 返回受影响的总行数而不仅仅是父行吗?

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

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

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

我担心这是低效的,因为它会检索所有对象,所以如果有人有更好的主意,我想知道。

最新更新