Book と Chapter の間には 1 対多の関係があります。ブック オブジェクトを作成し、それに章を正常に追加できます (データストアを調べて、自分の作成を確認します)。ただし、章をループしようとすると本をフェッチした後、エラーが発生します
javax.jdo.JDODetachedFieldAccessException: You have just attempted to access field
"chapters" yet this field was not detached when you detached the object. Either dont
access this field, or detach it when detaching the object.
多くの調査の後、私は最終的に@Basic
方法にちょうど場所を言うブログを見つけましたgetChapters
. これを行うと、次の新しいエラーが発生します。
java.lang.IllegalStateException: Field "Book.chapters" contains a persistable object
that isnt persistent, but the field doesnt allow cascade-persist!
いろいろ試してみた結果、最新のモデルの見た目は
@Entity
public class Account {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@OneToMany(mappedBy = "book", cascade = CascadeType.ALL)
private List<Chapter> chapters = new ArrayList<Chapter>();
}
@Entity
public class Chapter {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;
@ManyToOne(fetch = FetchType.EAGER)//already tried without annotation and with FetchType.LAZY
private Book book;
}