к сожалению, я не смог найти решение для моей текущей проблемы. (Пожалуйста, опубликуйте ссылку, если я что-то пропустил)
У меня есть многослойная структура объекта следующим образом
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=?
Кто-нибудь знает, почему добавление работает, а удаление вызывает исключение?
Вам нужна дополнительная информация о коде?