【问题标题】:How you will implement join query for JDO您将如何为 JDO 实现连接查询
【发布时间】:2013-04-19 08:43:36
【问题描述】:

你有一个查询说:-

select p from profiles p, group g where p.profileId = g.profileId

您将如何使用 JDO 实现它。它可能是基本的,但我是 JDO 的新手,无法搜索有意义的东西。

【问题讨论】:

  • JDO 规范是怎么说的?它有很多例子,DataNucleus 网站也是如此
  • 没听懂你
  • 正如之前的评论者所说,“JDO 规范”是一个公共文档,因此建议您阅读它,因为它告诉您有关 JDO 和 JDOQL 的所有信息。如果使用 DataNucleus,那么它的文档也会告诉您如何形成 JDOQL 查询。这应该是出现问题之前的先决条件。当您阅读了这些内容并告诉人们您尝试过的内容后,请根据这些知识提出您的问题

标签: jdo


【解决方案1】:

在 JDOQL 中,您实际上并没有像 JOIN 这样的东西。正如@sihaya 提到的,检索对象还将获取其所有成员(取决于配置的获取类型(“eager”将加载所有内容,“lazy”将稍后加载))

查看文档,您可以使用类似的东西,称为“未绑定变量”:

未绑定的变量,用来代替 SQL 的 JOIN 操作

ObjectDB 支持未绑定变量,但 JDO 认为是可选的。带有未绑定变量的查询类似于 SQL 中的 JOIN 查询,因为必须针对每个候选对象检查每个变量组合。就像 SQL 中的 JOIN 查询一样,带有未绑定变量的查询可能会变得非常慢,因此在使用时需要小心。

这里是链接:https://www.objectdb.com/database/jdo/manual/chapter7

【讨论】:

    【解决方案2】:

    在 JDO 和其他对象关系映射框架(例如 JPA)中,两个实体之间关系的连接条件是从元模型中推断出来的。

    在您的示例中,您可能有两个实体 Profile 和 Group 以及从 Group 到 Profile 的 n-1 关系。然后给出以下实体:

    @PersistenceCapable
    public class Group {
         private Profile profile;
         ...
    }
    

    @PersistenceCapable
    public class Profile {
         ...
    }
    

    执行以下 JDO 查询将选择组引用的所有配置文件:

    select g.profile from Group g
    

    【讨论】:

    • 这不是一个连接。
    猜你喜欢
    • 1970-01-01
    • 2012-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2021-06-23
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多