2013-05-09 10 views
8

Sono una specie di nuovo ai graal e sto avendo un sacco di problemi con l'unione di due tabelle esistenti tramite gli oggetti di dominio creati da tali tabelle. Qualcuno sa come farlo in graal? Ecco come appaiono i tavoli e un esempio di come ho bisogno di guardare la tabella unita. Grazie in anticipo per l'aiuto.Come fare un semplice join di tabelle in Grails

Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

Ho bisogno di unire questi 2 tavoli dove field1table1 = field1table2 e la tabella risultante unirsi ho bisogno di guardare in questo modo:

JoinedTable{ 

    field1table1 

    field2table2 
} 

risposta

6

Se i domini non ha una relazione (hasOne, hasMany, ecc) È possibile utilizzare executeQuery per eseguire query HQL qualcosa di simile:

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

Guarda doc

Spero che questo aiuti

+1

Grazie per l'aiuto! Questo ha funzionato. – southpaul

1

associazioni di associazioni di Grails tra oggetti dominio con riferimenti a oggetti. Questo usa la colonna id della tabella per mappare la relazione.

Per molti-a-molti tra Table1 e Table2, il tipico modo per fare questo in grails è così:

TableOne { 
    static hasMany = [tableOnes: TableOne] 
} 

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

In questo caso, Grails genera automaticamente una tabella unirsi in colonne per la ID di ogni tabella.

Se è necessaria un'associazione basata su colonne non id, sarà necessario gestirla autonomamente e unirsi alle tabelle utilizzando HQL.

+0

Grazie per l'informazione, in questo caso mi sono unito ai campi che non erano l'id, quindi ho finito con l'HQL. – southpaul

0

È possibile utilizzare un join frase come questa, questo ha funzionato per me withough qualsiasi configurazione relazione tra tabelle

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

Spero che questo aiuti