【问题标题】:HQL select when objects are mappedBy using annotationsHQL 选择何时映射对象通过使用注释
【发布时间】:2013-09-22 14:42:28
【问题描述】:

我有一个关于 HQL 的问题。假设,我有两个表。例如,表“人员”和表“手机号码”。一个人多个手机号码。关系是@OneToMany

在我的 Person.java 类中,这是一个实体,我有一些字段,其中一个字段是

List<MobileNumber> mobiles; // (list of mobile numbers). 

问题是这样的: 我想在 HQL 中访问 MobileNumber.java 类的字段之一。像这样:

Query = EntityManager.createQuery("select p.someField from Person where p.mobiles.someField = "value" );

MobileNumber 对象映射到 Person 对象。正如我提到的关系是 OneToMany 和 Person 包含 MobileNumbers 列表。如果关系是 OneToOne 或 ManyToOne 这不是问题,因为在这种情况下 Person 对象只包含一个 MobileNumber 对象。

提前致谢。

【问题讨论】:

    标签: java orm hql


    【解决方案1】:

    您可以在其他实体上JOIN

    SELECT mobile.someField 
    FROM Person person 
    JOIN person.mobiles mobile 
    WHERE mobile.someField = "value"
    

    Read more about it in the documentation.

    【讨论】:

    • 谢谢,但我没有使用 JOIN 语句。而不是这个,我使用注释。
    • @Chala 您正在使用 HQL。您需要使用正确的 HQL 语法来实现您的目标。这个用例与注解无关。
    • 我在这个语句中使用注解可以吗?
    • @chala 正如我所说,对于这个特定的用例没有注释的概念。如果要访问与@OneToMany 映射的实体的字段,则需要使用JOIN。我不明白你为什么不想。
    • 另外,只有JOIN语句就够了还是需要join的类型?
    猜你喜欢
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 2010-10-29
    • 1970-01-01
    相关资源
    最近更新 更多