我有两个实体:
@Entity
public class A extends Observable {
@Id
private int id;
}
@Entity
public class B implements Observer {
@Id
private int id;
@ManyToMany
private List<A> observableList;
public void addObservable(A observable){
observableList.add(observable);
observable.addObserver(this); //How will this get persisted
// as it gets added in the super
//class Observable which is not an entity?
}
@Override
public void update(Observable o, Object arg){
//update methods
}
}
我的目标是在任何可观测量发生变化时通知B.因此,我正在查看JDK的Observer / Observable。
我面临的问题是如何保留任何添加的观察者?
我可以想到的一种可能方式:在子类A中维护观察者列表并执行后加载操作以将观察者添加到Observable超类:
@Entity
public class A extends Observable {
@Id
private int id;
@OneToMany
private List<B> observers;
@PostLoad
public void initialize(){
for(B b : observers){
addObserver(b);
}
}
}
这样,我在super和subclass中维护相同的对象列表,这对我来说似乎只是一个糟糕的解决方法。
无论是否使用Observer模式,我如何干净利落地实现这一目标?
答案 0 :(得分:1)
你需要重新考虑你的实际目标,至少对我来说,用例是完全不清楚的。