我有以下对象化关系:
@Entity(“Author”)
public class Author{
@Id
private long authorId;
…
}
@Entity(“Book”)
public class Book{
@Id
private long id;
private Key<Author> authorKey;
…
}
现在是有趣的部分:我有 authorId
(id,不是实体),我需要为该作者查询 Book。我的查询在下面,但它返回一个空列表,而我确实知道该作者在数据存储区中有书籍。那么我该如何解决这个查询呢?
public static List<Book> getBooksForAuthor(Long authorId) {
Key<Author> authorKey = Key.create(Author.class, authorId);
return OfyService.ofy().load().type(Book.class).filter("authorKey", authorKey).order(“-date").list();
}
最佳答案
您将需要@Index
Book.authorKey
和Book.date
字段。我不记得这是否需要 {authorKey, date} 上的多属性索引,但请尝试不使用它,看看它是否有效。
我还建议您将该字段称为“作者”而不是“authorKey”。
关于google-app-engine - 按 "key"字段过滤 Objectify 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160305/