2013-05-09 52 views
8

我对grails很陌生,我通过从这些表格创建的域对象连接两个现有表格遇到了很多麻烦。有谁知道如何在Grails中做到这一点?以下是表格的样子,以及我需要如何查看连接表的示例。先谢谢您的帮助。如何做一个简单的表格加入Grails

Table1{ 

    field1table1 
} 

Table2{ 

    field1table2 

    field2table2 
} 

我需要加入这两个表,其中field1table1 = field1table2产生的表一起,我需要这个样子:

JoinedTable{ 

    field1table1 

    field2table2 
} 

回答

6

如果您的域名没有任何关系(hasOne,的hasMany,等)可以使用的executeQuery来执行HQL查询,像这样:

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

doc

希望这有助于

+1

感谢您的帮助!这工作。 – southpaul 2013-05-09 16:55:21

1

Grails将域对象与对象引用之间的关联进行映射。这使用表格的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 2013-05-09 16:56:05

0

您可以使用加入一句这样的,这个工作对我来说withough任何关系的配置表

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

希望这有助于