2013-05-09 15 views
8

Jestem trochę nowy dla grails i mam duże problemy z łączeniem dwóch istniejących tabel przez obiekty domeny, które zostały utworzone z tych tabel. Czy ktoś wie, jak to zrobić w grails? Oto, jak wyglądają tabele i przykład tego, jak powinien wyglądać połączony stół. Z góry dziękuję za pomoc.Jak dokonać prostego łączenia tabeli w Grails

Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

muszę dołączyć do tych 2 tabele gdzie field1table1 = field1table2 i otrzymaną tabeli łączącej muszę wyglądać następująco:

JoinedTable{ 

    field1table1 

    field2table2 
} 

Odpowiedz

6

Jeśli domeny nie ma żadnego związku (hasOne, hasMany, etc) można używać executeQuery do wykonywania zapytań HQL coś takiego:

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

spojrzeć na doc

Mam nadzieję, że to pomaga

+1

Dzięki za pomoc! To zadziałało. – southpaul

1

Grails mapuje powiązania między obiektami domeny z odwołaniami do obiektów. Wykorzystuje to kolumnę identyfikatora tabeli do odwzorowania relacji.

Przez wiele-do-wielu relacji między Tabela1 i tabela2, typowy sposób to zrobić w Grails jest tak:

TableOne { 
    static hasMany = [tableOnes: TableOne] 
} 

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

W tym przypadku, Grails automatycznie generuje tabelę przyłączenia z kolumn dla Identyfikatory każdego stołu.

Jeśli potrzebujesz asocjacji łączącej się z kolumnami innymi niż id, musisz zarządzać nią samodzielnie i dołączać do tabel przy użyciu HQL.

+0

Dzięki za informację, w tym przypadku dołączyłem na podstawie pól, które nie były id, więc skończyło się na tym, że korzystam z HQL. – southpaul

0

Można użyć dołączyć zdanie tak, to pracował dla mnie withough dowolnej konfiguracji relacji między tabelami

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

nadzieję, że to pomaga

Powiązane problemy