Owner が Watch(es) のコレクションを持っているとしましょう。
ウォッチを作成し、新しく作成したウォッチを既存の所有者のウォッチ コレクション (配列リスト) に追加しようとしています。
私の方法は次のとおりです。
public void add(String ownerName, String watchName) {
Owner o = new OwnerDAO().retrieve(ownerName); //retrieves owner object without fail
EntityManager em = EMF.get().createEntityManager();
EntityTransaction t = em.getTransaction();
Watch w = new Watch(watchName);
Owner owner = em.merge(o);
t.begin();
owner.getWatches().add(w);
t.commit();
em.close();
}
コードはローカル GAE 環境では問題なく動作しますが、オンライン GAE 環境では次の問題が発生しました。
org.datanucleus.store.mapped.scostore.FKListStore$1 fetchFields: Object "package.Owner@2b6fc7" has a collection "package.Owner.watches" yet element "package.Watch@dcc4e2" doesnt have the owner set. Managing the relation and setting the owner
.
この問題を解決する方法を教えてください。ありがとうございました!
エンティティ:
オーナー:
@id
private String name;
@OneToMany(mappedBy = "owner",
targetEntity = Watch.class, cascade = CascadeType.ALL)
private List<Watch> watches= new ArrayList<Watch>();
時計:
@id
private String name;
@ManyToOne()
private Owner owner;
事前にどうもありがとうございました!
からだに気をつけてね、
ジェイソン