8

我是 grails 的新手,通过从这些表创建的域对象连接两个现有表时遇到了很多麻烦。有谁知道如何在grails中做到这一点?以下是表格的外观以及我需要连接表格的外观示例。在此先感谢您的帮助。

Table1{ 

     field1table1 
} 

Table2{ 

     field1table2

     field2table2 
} 

我需要加入这 2 个表,其中 field1table1 = field1table2 和结果表加入我需要看起来像这样:

JoinedTable{

     field1table1 

     field2table2 
}
4

3 回答 3

6

如果您的域没有任何关系(hasOne、hasMany 等),您可以使用 executequery 执行 hql 查询,如下所示:

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

文档

希望这可以帮助

于 2013-05-09T16:36:59.100 回答
1

Grails 映射域对象与对象引用之间的关联。这使用表的 id 列来映射关系。

对于 Table1 和 Table2 之间的多对多关系,在 grails 中执行此操作的典型方法是这样的:

TableOne {
    static hasMany = [tableOnes: TableOne]
}

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

在这种情况下,Grails 会自动生成一个连接表,其中包含每个表的 id 列。

如果您需要对非 id 列进行关联连接,则必须自己管理它并使用 HQL 连接表。

于 2013-05-09T16:39:47.477 回答
0

您可以使用这样的连接语句,这对我有用,无需表之间的任何关系配置

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

希望这可以帮助

于 2018-02-25T22:54:19.213 回答