私は非常に独特の何かについて知りました。私は注釈FetchType.EAGERがオブジェクトの削除を妨げるのはなぜですか?
@OneToMany(fetch = FetchType.EAGER, mappedBy = "account", cascade = CascadeType.ALL, orphanRemoval = true)
List<LeaveQuery> leaveQueryList;
と
@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "FK_account", nullable = true)
private Account account;
を使用するとき、私はもはや、データベースからLeaveQueryを削除することはできませんよ。いずれかの側でFetchType.EAGERをLAZYに変更すると正常に削除されますが、FetchType.EAGERを使用するには両側が必要です。
誰にもこの問題の回避策がありますか?
よろしく
EDIT:
HERESに私の削除コード:私は
Hibernateはそのオブジェクト場合は、子オブジェクトを削除しません、問題の原因を発見した
public ResponseEntity<?> delete(@PathVariable long custId) {
log.info("entering deleteleaverequest");
LeaveQuery deleteLeaveQuery = leaveQueryRepository.findOne(custId);
log.info("condition" + deleteLeaveQuery.getStatus().equals("Onbehandeld"));
if (!deleteLeaveQuery.getStatus().equals("Onbehandeld"))
return ResponseEntity.badRequest().build();
leaveQueryRepository.delete(deleteLeaveQuery);
accountService.sendLeaveRequestCanceledNotification(deleteLeaveQuery);
return ResponseEntity.ok().build();
}
あなたはどのように削除しますか?何かエラーを投げますか? p.s. eagerは非コレクションのデフォルトです – Zeromus
何のエラーもありません。しかし、カスタム削除メソッドを作成すると、奇妙なTransastionrequiredエラーがスローされます。このスレッドでこれについて詳しく説明しました。 https://stackoverflow.com/questions/47549043/my-spring-jparepository-throws-a-transactionrequiredexception-when-im-trying-to/47549326#47549326しかし、jparepositoryの通常の組み込み削除機能を使用すると、任意のエラーをスローする – Maurice
ええ、あなたが削除を行うコードの部分を入れて – Zeromus