我想从JPA中的两个不同的entite中获取数据。我正在使用带有App Engine的Google DataStore将我的数据存储在云存储上。现在我想要的是通过使用Join
查询从两个不同的entites中获取数据。由于我是app引擎和数据存储的新手,我不知道该怎么做。我提到了this链接,它说DataStore不能正确支持连接。真的吗?请求我解决这个问题。谢谢。
答案 0 :(得分:2)
有足够的地方可以清楚地说明GAE / Datastore没有“加入查询”。例如https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2
如果您使用google-cloud-sql(为什么将此问题标记为SQL?),我建议您更新您的问题以说明
答案 1 :(得分:1)
如何在数据存储不加入记录时:在客户端应用程序代码中编写连接。警告 - 根据数据,执行此操作可能会花费大量开销。这是一个稻草人答案,旨在证明最后一段中的真实答案。
从概念上讲,您的应用程序可以实现嵌套循环连接,如下所示。选择外部循环的预期记录计数最低的实体。创建一个查询以迭代这些记录。在每个记录的迭代器循环中,复制用于连接变量的字段,然后创建一个内部嵌套查询,将这些变量作为参数。迭代内部查询生成的记录,并为每个内部记录使用内部和外部当前实体的数据生成输出记录。
因为外部嵌套循环连接是一个坏主意,所以你应该考虑重新设计你当前的模式,以产生你想要的结果,而根本不需要连接。首先想象一下你想要的输出直接来自一种实体。这通常意味着放弃关系正常形式。在设计了可以提供所需输出的适当NoSQL结构之后,您应该设计适当的NoSQL算法来编写数据。