【问题标题】:Can I get the count of rows deleted through a OneToMany cascade relationship?我可以通过 OneToMany 级联关系获取删除的行数吗?
【发布时间】:2019-06-21 07:04:50
【问题描述】:

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

【问题讨论】:

  • 我在 JPA 中没有看到这样的功能。我认为只有客户实施。删除前选择count,或者先删除children

标签: java spring jpa


【解决方案1】:

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

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

这将返回所有已删除的 Parent 对象。然后我可以通过每个 Parent 中的 .children 看看有多少(有)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-18
    • 2018-02-07
    • 1970-01-01
    • 2021-09-24
    相关资源
    最近更新 更多