Google Datastore在java中的一对多关系

时间:2017-07-20 09:29:38

标签: java google-app-engine google-cloud-datastore

查看docs当找到一对多的关系时,我找不到如何构建数据的任何好的解释。问题是单个查询需要花费很多时间,所以它不是一个很好的解决方案来进行多个查询。

让我们假设以下结构:

   Entity
   Key(String hash) value(String) ...other values

   User
   Key(String hash) Entity Key(String hash)

现在,如果我可以查询所有用户实体的哈希密钥,并且每个密钥都会进行查询以获取实际值,但这不是一个选项,因为尽可能多的查询分配给用户的查询太多了。

我应该如何构建数据,或者如何进行单个查询以检索所有用户的数据?

1 个答案:

答案 0 :(得分:0)

鉴于以下情况 -

  • UserEntity
  • NotesEntity

一个用户拥有零个或多个Notes(一对多)

一种方法是将UserEntity设置为每个Notes实体的父级

  • UserEntity - 密钥,名称,电子邮件
  • NotesEntity - 密钥,父密钥(用户),Notes日期,注释描述

现在要为给定用户检索全部或一页Notes,您只需运行一个Ancestor查询,如下所示:

SELECT * FROM NotesEntity WHERE __key__ HAS ANCESTOR a_user_key