私はJPA/JDOとobjectdbの世界全体でかなり新しいです。Google App Engine - JDODetachedFieldAccessException
私は文字列の集合を持つエンティティを持っているが、ビットのようになります。
EntityManager em = EMF.get().createEntityManager();
Foo myFoo = em.find(Foo.class, fooKey);
em.getTransaction().begin();
myFoo.addBar(newBar);
em.merge(myFoo);
em.getTransaction().commit();
:今
@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);
}
}
、コードの別の部分で、私はこのような何かをしようとしています
もちろん、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クラスのメタデータに関するエラーを得ましたこれを簡単な英語で説明します。
ありがとう、私は本当にそれらの2つが混ざっている。 私はJPAを書いていることを知っていましたが、JDOの例外があるので、日食がバックグラウンドで行われた可能性があると思いました。 私もjpaのGoogle Appengineチュートリアルを読んだが、それは役に立たなかった。彼らはあまりにも多くの表記について書いていません。そしてそこのリンクのいくつかは壊れています。とにかく、JPAで書いていたときになぜJDOの例外があるのかを調べるべきだと私は思っていました。そして結局答えを見つけたので、ありがとう! –