2008-09-16 2 views
2

이와 같은 구성으로 HQL을 사용하여 table2의 개별 열에 도달 할 수 있습니까?집합의 열을 쿼리하는 HQL

<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> 

답변

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

쿼리 할 수는 있지만 where 절에 포함시킬 수는 없습니다. 예를 들어, T1으로

일하는 것이 표에서

선택 t1.table2.x하지만, T1 등의 표에서

선택 T1은 어디 t1.table2.x =

foo는

는 않을 것입니다.

0

table2에 "color varchar(128)"열이 있고이 열이 Hibernate에 올바르게 매핑되었다고 가정 해 보겠습니다.

당신이 뭔가를 할 수 있어야한다 :

from table1 where table2.color = 'red' 

이 누구 color 열 '빨간색'인 table2 행에 연결되어있는 모든 table1 행을 반환합니다. Hibernate 매핑에서, set은 그것이 참조하는 테이블과 같은 이름을 가진다. 위 쿼리는 의 이름을으로 설정하고 이 아니고 테이블의 이름을 사용합니다.