在DataStore JPA java- App引擎中加入查询

时间:2014-03-10 07:06:22

标签: java android google-app-engine jpa

我想从JPA中的两个不同的entite中获取数据。我正在使用带有App Engine的Google DataStore将我的数据存储在云存储上。现在我想要的是通过使用Join查询从两个不同的entites中获取数据。由于我是app引擎和数据存储的新手,我不知道该怎么做。我提到了this链接,它说DataStore不能正确支持连接。真的吗?请求我解决这个问题。谢谢。

2 个答案:

答案 0 :(得分:2)

有足够的地方可以清楚地说明GAE / Datastore没有“加入查询”。例如https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2

如果您使用google-cloud-sql(为什么将此问题标记为SQL?),我建议您更新您的问题以说明

答案 1 :(得分:1)

如何在数据存储不加入记录时:在客户端应用程序代码中编写连接。警告 - 根据数据,执行此操作可能会花费大量开销。这是一个稻草人答案,旨在证明最后一段中的真实答案。

从概念上讲,您的应用程序可以实现嵌套循环连接,如下所示。选择外部循环的预期记录计数最低的实体。创建一个查询以迭代这些记录。在每个记录的迭代器循环中,复制用于连接变量的字段,然后创建一个内部嵌套查询,将这些变量作为参数。迭代内部查询生成的记录,并为每个内部记录使用内部和外部当前实体的数据生成输出记录。

因为外部嵌套循环连接是一个坏主意,所以你应该考虑重新设计你当前的模式,以产生你想要的结果,而根本不需要连接。首先想象一下你想要的输出直接来自一种实体。这通常意味着放弃关系正常形式。在设计了可以提供所需输出的适当NoSQL结构之后,您应该设计适当的NoSQL算法来编写数据。