3
我試圖跟蹤JPA OneToMany關聯中的更改,以便通知訂閱者事件對象的區域(這些關聯之一)已被更改。我首先嚐試了一下List的專業化,以瞭解變化。如何實現可移植的JPA isDirty()方法?
@OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
@JoinColumn(name = "col_name")
private List<SomeType> oneOfManyLists = new CAArrayList<SomeType>();
我的裝飾看起來是這樣的:
public class CAArrayList<T> extends ArrayList<T> {
private boolean changed = false;
public CAArrayList() {
super();
}
public boolean isChanged() {
return changed;
}
// Mutable delegates
@Override
public boolean add(T e) {
changed = true;
return super.add(e);
}
....
}
在我要檢查它的一對多協會已經改變了DAO, 不幸的是以下行導致了拋出ClassCastException因爲Hibernate圍繞我CAArrayList這與PersistentBag:
((CAArrayList) obj.getSomeList()).isDirty()
下一個工作,但不是JPA的不同實現之間移植。
((PersistentBag) obj.getSomeList()).isDirty()
這應該如何以便攜的方式完成?
@Matt這可能不是那麼重要,但我們的團隊對這些事情相當嚴格,我們一直在尋找乾淨的解決方案。這可能是我忽略了JPA API中的某些內容。 – stacker