2

是否可以使用具有这样的配置的 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>
4

3 回答 3

1

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

select t1.table2.x from table1 as t1

会工作,但是

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

不会。

于 2008-09-16T18:23:48.620 回答
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

这是休眠文档的相关部分。

于 2008-09-16T18:11:34.173 回答
0

假设 table2 有一个列“ color varchar(128)”,并且该列正确映射到 Hibernate。

你应该能够做这样的事情:

from table1 where table2.color = 'red'

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

于 2008-09-16T19:47:47.873 回答