【问题标题】:Join query in DataStore JPA java- App engine在 DataStore JPA java- App 引擎中加入查询
【发布时间】:2014-03-10 07:06:22
【问题描述】:

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

【问题讨论】:

    标签: java android google-app-engine jpa


    【解决方案1】:

    有很多地方明确说明 GAE/Datastore 不执行“连接查询”。如https://developers.google.com/appengine/docs/java/datastore/jdo/overview-dn2

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

    【讨论】:

    • 好的..那么我将如何实现此功能?有没有其他办法?
    • 您的意思是除了链接问题中的答案之外,如果需要这样做,可以嵌入类?
    • 有没有其他方法可以从 DataStore 中的多个实体中获取数据?
    • 我使用的是 JPA 而不是 JDO。那么是否可以使用 Datastore 应用引擎在 JPA 中加入?
    • API 与它的关系为零。数据存储与它有关。这些陈述是明确的。
    【解决方案2】:

    当您的数据存储没有连接记录时,如何连接记录:在客户端应用程序代码中编写连接。警告 - 根据数据,这样做可能会花费大量开销。这是一个稻草人答案,旨在证明最后一段中的真实答案是正确的。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多