假设我有一个一对多模型,涉及存储几本书及其章节,例如
@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 中这个查询的等价物是什么?非常感谢。
注意:出于说明目的,我从这里获得了一些代码。