1

私は次のようなエンティティを持っています。

Claimant:

@OneToMany(mappedBy = "payTo", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @NotAudited
    private Set<Payment> payments = new HashSet<Payment>();

Payment:
 @OneToMany(mappedBy = "rofOf", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @Audited(targetAuditMode = RelationTargetAuditMode.NOT_AUDITED)
    private Set<Payment> returnOfFundings = new HashSet<Payment>();    

Claimant.merge()を実行する場合

次の例外が発生します"コレクション[com.bfds.saec.domain.Payment.returnOfFundings]はflush()によって処理されませんでした"

上記の1つの解決策では、マージする前に、Paymentに参加して申立人をリロードするだけであることがわかりました。

しかし、私に知らせてください、私は支払いで請求者をリロードしたくないので、上記の問題を解決する他の方法はありますか?

問題の根本的な原因は何でしょうか?そこで定義した関係に問題はありますか?

4

1 に答える 1

1

問題の根本原因は、Hibernateの HHH-273バグのようです。コメントによると、Envers がコレクションに触れたときにもポップアップします。これはバージョン 4.0.1 で修正されているため、Hibernate を更新するのが最善の方法です。

于 2012-06-13T15:07:26.500 に答える