如何在Grails中进行简单的表连接

8

我对grails比较新,目前在通过已有的数据表创建的领域对象中连接两个表格时遇到了很多问题。是否有人知道如何在grails中做到这一点?下面是表格的样子以及我需要连接后的例子。感谢您提前的帮助。

Table1{ 

     field1table1 
} 

Table2{ 

     field1table2

     field2table2 
} 

我需要连接这两个表,其中field1table1 = field1table2,最终的联接表应该像这样:

JoinedTable{

     field1table1 

     field2table2 
}
3个回答

6
如果您的域没有任何关系(hasOne,hasMany等),您可以使用executequery来执行hql查询,类似于以下内容:
Table1.executeQuery("select * from Table1 t1,Table2 t2 where t1.field1table1 = t2.field2table2")

请查看文档
希望这能帮到你。

1
Grails使用对象引用来映射域对象之间的关联关系,这使用表的id列来映射关系。 对于Table1和Table2之间的多对多关系,在Grails中通常的做法是这样的:
TableOne {
    static hasMany = [tableOnes: TableOne]
}

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

在这种情况下,Grails会自动生成一个带有每个表ID列的联接表。
如果您需要基于非ID列进行关联,则需要自己管理并使用HQL连接表。

谢谢提供的信息,在这种情况下,我是基于非ID字段进行连接的,所以最终选择了HQL。 - southpaul

0

您可以使用类似这样的联接语句,这对我来说没有任何表之间的关系配置也能正常工作。

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

希望这能有所帮助


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接