残念ながら、現在の問題の解決策を見つけることができませんでした。(何か見落としがあればリンクを貼ってください)
次のような多層エンティティ構造があります
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=?
追加が機能しているのに削除すると例外がスローされる理由を知っている人はいますか?
コードに関する詳細情報が必要ですか?