Grails域模型使用SQL连接访问db的内容

时间:2014-09-12 17:39:27

标签: sql grails model inner-join

我有一个名为Property

的模型
Class Property{
   String name
   RoomPreference roomPreference
}

这里的RoomPreference是另一种模式。

Class RoomPreference{
   String age
}

我将数据存储在这些表中。我发现有字段' ROOM_PREFERENCE_ID'在属性表中。 ' ID'是RoomPreference表中的一个字段。 对于某些任务,我需要编写一个连接这些表的SQL查询。

我写道,

 select * from 
 Property p, RoomPreference r
 where p.ROOM_PREFERENCE_ID=r.ID

但它给出了一个错误,说明属性表中没有字段ROOM_PREFERENCE_ID。加入这些表的解决方案是什么?我试过了roomPreferenceId'也。但它给出了一个错误。

2 个答案:

答案 0 :(得分:0)

无法识别列。因此您需要添加以下内容: 在域RoomPreference中添加映射

class RoomPreference {
    Long id 
    ....
    static mapping = {
        id column:"ROOM_PREFERENCE_ID"

    }

}

现在正确地看到@Alidad评论。不确定你是在尝试hsql还是纯sql? 如果您正在使用hql,那么@Alidad所述,在进行连接时使用id而不是ROOM_PREFERENCE_ID。 静态映射属性总是可取的,因为它有时可以避免不必要的映射错误。

希望它有所帮助。

答案 1 :(得分:0)

SQL查询编写如下:

Select p 
 from Property p INNER JOIN p.roomPreference r
 where 
    ..........

通过这种方式,表可以在hibernate或HQL中连接。 INNER JOIN子句将连接表,因此'where'子句后不应该有'p.room_preference_id = r.id'子句。