我们正在使用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中从命名查询中进行选择?怎么样?