2013-05-09 12 views
8

Grailsの新機能です。既存の2つのテーブルを、それらのテーブルから作成されたドメインオブジェクトを介して結合することに多くの問題があります。誰もがgrailsでこれを行う方法を知っていますか?ここでは、テーブルの外観と、結合されたテーブルをどのように表示する必要があるかの例を示します。助けを前にありがとう。Grailsで簡単なテーブル結合を行う方法

私はfield1table1 = field1table2と結果のテーブルは、私はこのように見える必要があり参加し、これらの2つのテーブルに参加する必要が
Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

:あなたのドメインは、任意の関係(のhasOne、hasManyのを持っていない場合は

JoinedTable{ 

    field1table1 

    field2table2 
} 

答えて

6

を、

Table1.executeQuery("select * from Table1 t1,Table2 t2 where t1.field1table1 = t2.field2table2") 

doc

を見てみましょう。など)あなたはHQLクエリにこのような何かを実行するためには、executeQueryを使用することができます

希望します。

+1

感謝を役に立てば幸い!これはうまくいった。 – southpaul

1

ドメイン参照とオブジェクト間の関連付けをマップします。これは、テーブルのidカラムを使用して関係をマップします。表1と表2との間の多対多の関係について

、Grailsのでこれを行う一般的な方法は次のようである:この場合

TableOne { 
    static hasMany = [tableOnes: TableOne] 
} 

TableTwo { 
    static belongsTo = TableOne 
    static hasMany = [tableTwos: TableTwo] 
} 

、Grailsは自動的の列と結合テーブルを生成します各表のID。

非ID列で結合を行う必要がある場合は、それを自分で管理し、HQLを使用してテーブルに結合する必要があります。あなたはこのように参加文を使用することができます

+0

情報をお寄せいただきありがとうございます。この場合、私はIDの人ではないフィールドに基づいて参加していましたので、HQLに行くことになりました。 – southpaul

0

、これはテーブル

def result = Table1.executeQuery("select t1 from Table1 t1 left join Table2 t2 on t1.fieldtable1 = t2.fieldtable2") 

の間の任意の関係の設定withough私のために働いた、これは助けのための