1. ホーム

[解決済み】Hibernate - cascade="all-delete-orphan" のコレクションが、所有するエンティティインスタンスから参照されなくなった。

2022-04-16 03:20:58

質問

エンティティを更新しようとすると、次のような問題が発生します。

"A collection with cascade=”all-delete-orphan” was no longer referenced by the owning entity instance".

親エンティティがあるのですが、そのエンティティに Set<...> のいくつかの子エンティティがあります。更新しようとすると、このコレクションに設定するすべての参照を取得し、それを設定します。

次のコードは、私のマッピングを表しています。

@OneToMany(mappedBy = "parentEntity", fetch = FetchType.EAGER)
@Cascade({ CascadeType.ALL, CascadeType.DELETE_ORPHAN })
public Set<ChildEntity> getChildren() {
    return this.children;
}

これによると、Set<...>だけは掃除してみたのですが。 解決する方法 が、うまくいきませんでした。

何か思い当たる節があれば教えてください。

ありがとうございました。

解決方法は?

実は、私の問題は、エンティティのイコールとハッシュコードにありました。レガシーコードは多くの問題を引き起こす可能性があるので、チェックすることを忘れないでください。私がしたことは、delete-orphan戦略を維持し、equalsとhashcodeを修正することだけです。