0

残念ながら、現在の問題の解決策を見つけることができませんでした。(何か見落としがあればリンクを貼ってください)

次のような多層エンティティ構造があります

class Parent {

    @OneToMany(
            mappedBy = "parent",
            cascade = CascadeType.ALL,
            orphanRemoval = true
    )
    private Set<ChildA> setOfChildA = new HashSet<>();

    @OneToMany( fetch = FetchType.EAGER, mappedBy = "parent", cascade = CascadeType.ALL, orphanRemoval = true )
    private Set<ChildB> setOfChildB = new HashSet<>();
}

class ChildB {
    @OneToMany( fetch = FetchType.LAZY, mappedBy = "childb", cascade = CascadeType.ALL, orphanRemoval = true )
    private Set<grandchild> grandchild = new HashSet<>();
}

親エンティティを追加してParent.setOfChildA追加ChildB.grandchildし、保存するだけで、すべて正常に機能します。

しかし、Parent.setOfChildAいくつかを削除して削除するとChildB.grandchild、次の例外が発生します

.m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.orm.jpa.JpaSystemException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1; nested exception is org.hibernate.jdbc.BatchedTooManyRowsAffectedException: Batch update returned unexpected row count from update [0]; actual row count: 2; expected: 1]

Hibernate は次の sql ステートメントをログに記録します

delete 
        from
            tbl_childa
        where
            childa_linkparentid=? 
            and childa_linkotherentityid=?
delete 
        from
            tbl_grandchild
        where
            grandchild_id=? 
            and grandchild_version=?

追加が機能しているのに削除すると例外がスローされる理由を知っている人はいますか?

コードに関する詳細情報が必要ですか?

4

1 に答える 1