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

Hibernate 如何在Grails中进行简单的表连接,hibernate,grails,gorm,Hibernate,Grails,Gorm,我对grails有点陌生,通过从这些表创建的域对象连接两个现有表时遇到了很多麻烦。有人知道如何在grails中实现这一点吗?下面是表的外观,以及我需要连接表的外观示例。提前谢谢你的帮助 Table1{ field1table1 } Table2{ field1table2 field2table2 } 我需要连接这两个表,其中field1table1=field1table2,结果表连接我需要如下所示: JoinedTable{ f

我对grails有点陌生,通过从这些表创建的域对象连接两个现有表时遇到了很多麻烦。有人知道如何在grails中实现这一点吗?下面是表的外观,以及我需要连接表的外观示例。提前谢谢你的帮助

Table1{ 

     field1table1 
} 

Table2{ 

     field1table2

     field2table2 
} 
我需要连接这两个表,其中field1table1=field1table2,结果表连接我需要如下所示:

JoinedTable{

     field1table1 

     field2table2 
}

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

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


希望这有助于

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

对于表1和表2之间的多对多关系,在grails中实现这一点的典型方法如下:

TableOne {
    static hasMany = [tableOnes: TableOne]
}

TableTwo {
    static belongsTo = TableOne
    static hasMany = [tableTwos: TableTwo]
}
在这种情况下,Grails会自动生成一个包含每个表ID列的联接表


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

您可以使用这样的联接语句,这对我来说非常有用,不需要表之间的任何关系配置

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

希望这能有所帮助

感谢您提供的信息,在本例中,我是基于非id字段加入的,因此我最终选择了HQL。