2008-09-16 17 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

としてTABLE1から

選択t1.table2.xは動作するが、t1.table2.xがfoo

ではないだろう= T1としてTABLE1から

選択T1になります。

0

テーブル2のカラムが "color varchar(128)"で、このカラムがHibernateに正しくマッピングされているとします。

あなたはこのような何かを行うことができる必要があります:

from table1 where table2.color = 'red' 

これはそのcolorコラム「赤」であるtable2行にリンクされているすべてのtable1行を返します。あなたのHibernateマッピングでは、setは、それが参照するテーブルと同じ名前を持つことに注意してください。上記のクエリでは、の名前がではなくのテーブルの名前を使用しています。

関連する問題