「A」、「B」、「C」の3つのエンティティがあります。
@Entity
public class A implements Serializable {
...
private B b;
@OneToOne(mappedBy = "a", fetch = FetchType.LAZY)
@Cascade({CascadeType.ALL})
public B getB() {
return b;
}
public void setB(B b) {
this.b = b;
}
...
}
@Entity
public class B implements Serializable {
...
private A a;
@OneToOne(fetch = FetchType.LAZY)
public A getA() {
return a;
}
public void setA(A a) {
this.a = a;
}
...
private Collection<C> cCollection;
@OneToMany(mappedBy = "b", fetch = FetchType.LAZY)
public Collection<C> getCCollection() {
return cCollection;
}
public void setCCollection(Collection<C> cCollection) {
this.cCollection = cCollection;
}
...
}
@Entity
public class C implements Serializable {
...
private B b;
@ManyToOne(optional = false, fetch = FetchType.LAZY )
public B getB() {
return b;
}
public void setB(B b) {
this.b= b;
}
}
B.cCollectionを更新して(Cオブジェクトを追加または削除して)、オブジェクトaを更新すると、これらの変更がa.getB()。getCCollection()の結果に影響することが予想されますが、それは発生せず、cCollectionリストは更新されません。 。refresh()操作が間違っていますか?
//Adding or removal C objects to/from a.getB().getCCollection()
//Persisting changes
myEM.refresh(a);
(注:私は休止状態とJPA 2.0を使用しています。データベースにデータを永続化しても問題はなく、実際に機能します)。