2013-05-09 7 views
8

Ich bin irgendwie neu zu Grails und ich habe eine Menge Probleme mit dem Beitritt zwei vorhandenen Tabellen durch Domain-Objekte, die aus diesen Tabellen erstellt wurden. Weiß jemand, wie man das in Grails macht? Hier sehen Sie, wie die Tabellen aussehen und ein Beispiel dafür, wie die verbundene Tabelle aussieht. Vielen Dank im Voraus für die Hilfe.Wie man eine einfache Tabellenbeitritt in Grails macht

Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

Ich brauche diese 2 Tabellen zu verbinden, in dem field1table1 = field1table2 und die resultierende Tabelle schließe ich mich so aussehen müssen:

JoinedTable{ 

    field1table1 

    field2table2 
} 

Antwort

6

Wenn Ihre Domains eine Beziehung haben nicht (hasOne, hasMany, etc) Sie executeQuery HQL-Abfragen so etwas wie diese verwenden können, um auszuführen:

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

Blick auf doc

Hoffe, dies hilft

+1

Danke für die Hilfe hilft! Das hat funktioniert. – southpaul

1

Grails Assoziationen zwischen Domain-Objekten mit Objektreferenzen zugeordnet. Dies verwendet die ID-Spalte der Tabelle, um die Beziehung zuzuordnen.

Für eine many-to-many-Beziehung zwischen Tabelle 1 und Tabelle 2, die typische Art und Weise dies in Grails zu tun ist, wie folgt aus:

TableOne { 
    static hasMany = [tableOnes: TableOne] 
} 

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

In diesem Fall Grails generiert automatisch eine Join-Tabelle mit Spalten für die IDs jeder Tabelle.

Wenn Sie eine Verknüpfung für Nicht-ID-Spalten benötigen, müssen Sie sie selbst verwalten und die Tabellen mithilfe von HQL verknüpfen.

+0

Danke für die Informationen, in diesem Fall wurde ich auf der Basis von Feldern verbunden, die nicht die IDs waren, also ging ich mit der HQL. – southpaul

0

Sie können ein Satz wie dieser verbinden verwenden, arbeitete für mich withough jeder Beziehung Konfiguration zwischen Tabellen

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

Hope this