我在两个实体之间有一个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,看看有多少(曾经)。
我担心这是低效的,因为它会检索所有对象,所以如果有人有更好的主意,我想知道。