私はJPA/JDOとobjectdbの世界全体にかなり慣れていません。
文字列のセットを持つエンティティがあり、次のようになります。
@Entity
public class Foo{
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private Set<String> bars;
public void setBars(Set<String> newBars){
if(this.bars == null)
this.bars = new HashSet<String>;
this.bars = newBars;
}
public Set<String> getBars(){
return this.bars;
}
public void addBar(String bar){
if(this.bars == null)
this.bars = new HashSet<String>;
this.bars.add(bar);
}
}
さて、コードの別の部分で、次のようなことをしようとしています:
EntityManager em = EMF.get().createEntityManager();
Foo myFoo = em.find(Foo.class, fooKey);
em.getTransaction().begin();
myFoo.addBar(newBar);
em.merge(myFoo);
em.getTransaction().commit();
もちろん、newBar が String の場合です。
しかし、私が得るものは次のとおりです。
javax.jdo.JDODetachedFieldAccessException: You have just attempted to access field "bars" yet this field was not detached when you detached the object. Either dont access this field, or detach it when detaching the object.
答えを探しましたが、見つかりませんでした。
誰かが文字列のセットについて尋ねるのを見たことがありますが、@ElementCollection 表記を追加するように言われました。
やってみたのですが、StringクラスのMetadataでエラーが出ました(意味がよくわかりません。)
これについて誰かが(簡単な英語で)説明しているのを参考にしていただければ幸いです。