HQL查询集合中的列

时间:2008-09-16 18:09:18

标签: java hibernate hql

是否可以使用具有此类配置的HQL来访问table2的各个列?

<hibernate-mapping>
  <class table="table1">
    <set name="table2" table="table2" lazy="true" cascade="all">
      <key column="result_id"/>
      <many-to-many column="group_id"/>
    </set>
  </class>
</hibernate-mapping>

3 个答案:

答案 0 :(得分:1)

它们只是table1的table2属性的属性。

select t1.table2.property1, t1.table2.property2, ... from table1 as t1

您可能需要加入,如此

select t2.property1, t2.property2, ... 
    from table1 as t1
    inner join t1.table2 as t2

以下是hibernate doc的相关部分。

答案 1 :(得分:1)

您可以查询它们,但不能将其作为where子句的一部分。如,

select t1.table2.x from table1 as t1

可行,但

select t1 from table1 as t1 where t1.table2.x = foo

不会。

答案 2 :(得分:0)

假设table2有一列“color varchar(128)”,此列已正确映射到Hibernate。

你应该可以这样做:

from table1 where table2.color = 'red'

这将返回链接到table1列为“红色”的table2行的所有color行。请注意,在Hibernate映射中,set与其引用的表具有相同的名称。以上查询使用的名称,表的名称。