jpaとhibernateで厄介なバグが発生しました。私は、次の注釈付きの課金クラスを持っている:オブジェクトがコレクションから削除されたときに1つ以上のコレクションを更新するHibernate
@OneToMany(cascade=CascadeType.ALL, fetch=FetchType.EAGER)
@JoinColumn(name="ch1_id", referencedColumnName="id")
private List<BillingItem>billingItems = new ArrayList<BillingItem>();
は今、私がコレクションから削除されたアイテムをフィルタリングする必要がありますが、JPA以外のものを使用することはできません。特定の休止状態の特定のアノテーションは許可されません。だから私は、ポストロード機能を書いた:更新billing_on_itemセットch1_id = nullのch1_id =:
@PostLoad
public void postLoad() {
ArrayList<BillingItem>tempItems = new ArrayList<BillingItem>();
Iterator<BillingItem> i = this.billingItems.iterator();
BillingItem item;
while(i.hasNext()) {
item = i.next();
if(item.getStatus().equals("D")) {
tempItems.add(item);
}
}
this.billingItems.removeAll(tempItems);
}
は、しかし、私をフィルタリングするために削除された項目がある場合に
にHibernateを見ていますか?とid =?
例外は、ch1_idが外部キーであり、nullにできないために発生します。しかし、休止状態は、パラメータを正しい値にバインドしています。なぜこのアップデートは最初に起こっていますか?エラーを修正するにはどうすればよいですか?事前に
おかげで、
ランディ
ありがとうございました!私はこのようなシンプルで洗練されたソリューションを考えたことはありませんでした。意味をなさない – randy