Hibernate:在HQL中如何从命名查询中进行选择

时间:2014-05-12 12:43:34

标签: hibernate hql

我们正在使用Hibernate 3.2.5

我们有2个实体EntityA和EntityB:

<hibernate-mapping package="entities">
    <class name="EntityA" mutable="false">
        <subselect>
            SELECT id, dataA FROM DataA
        </subselect>
        <id name="id"></id>
        <property name="dataA" />

        <sql-query name="getEntityA_2">
            <return class="entities.EntityA" />
            SELECT id, dataA FROM DataA WHERE condition = true
        </sql-query>
    </class>

    <class name="EntityB" mutable="false">
        <subselect>
            SELECT id, dataB, idA FROM DataB
        </subselect>
        <id name="id"></id>
        <property name="dataB" />
        <property name="idA" />

        <sql-query name="getEntityB_2">
            <return class="entities.EntityB" />
            SELECT id, dataB, idA FROM DataB WHERE condition = true
        </sql-query>

    </class>
</hibernate-mapping>

我需要编写一个命名的HQL查询来引用命名查询&#34; getEntityA_2&#34;。

我已经检查过Hiberante docs&#34; 10.4.1.7。外部化命名查询&#34;写了:

  

另请注意,元素内的查询声明需要查询的全局唯一名称,而元素内的查询声明通过预先添加类的完全限定名称(例如eg.Cat.ByNameAndMaximumWeight)自动变为唯一。

我试过了:

<query name="getEntytyB_withABcond">
    SELECT b.id, b.dataB, b.idA
    FROM
        EntityB b, EntityA.getEntityA_2 aCond
    WHERE aCond.id = b.idA
      AND b.condition = true
</query>

但我得到错误:

  

命名查询错误:getEntytyB_withABcond

     

org.hibernate.hql.ast.QuerySyntaxException:EntityA.getEntityA_2 aCond未映射...

而不是&#34; EntityA.getEntityA_2&#34;我也试过简单的&#34; getEntityA_2&#34;和&#34; entities.EntityA.getEntityA_2&#34;。也不会工作。

问题:有没有办法在HQL中从命名查询中进行选择?怎么样?

0 个答案:

没有答案