いくつかの本とその章を次のように保存することを含む1対多のモデルがあるとします
@Entity
public class Book {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private String title;
@OneToMany(mappedBy = "book", cascade = CascadeType.ALL)
private List<Chapter> chapters = new ArrayList<Chapter>();
// getters and setters
}
@Entity
public class Chapter {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private Key id;
private String title;
private int numPages;
@ManyToOne(fetch = FetchType.LAZY)
private Book book;
// getters and setters
}
そして、それを次のように永続化します
Book b = new Book();
b.setTitle("JDO 4eva");
Chapter c1 = new Chapter();
c1.setTitle("Intro");
c1.setNumPages(10);
b.getChapters().add(c1);
Chapter c2 = new Chapter();
c2.setTitle("Configuration");
c2.setNumPages(9);
b.getChapters().add(c2);
pm.currentTransaction().begin();
try {
pm.makePersistent(b);
pm.currentTransaction().commit();
} finally {
if (pm.currentTransaction().isActive()) {
pm.currentTransaction().rollback();
}
}
ただし、私の質問は、すべての章が同じエンティティの種類に格納されているが、対応する本の参照 (「外部キー」) がないため、特定の本の章のみを選択する方法です。
通常の SQL では、たとえば「select * from chapters where book="book_id"」のようにクエリを実行します。appengine でこのクエリに相当するものは何ですか?どうもありがとうございます。
注意:説明のためにここからコードの一部を取得しました。