我有一个名为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'也。但它给出了一个错误。
答案 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'子句。