【问题标题】:Grails: Help with HQL queryGrails:HQL 查询帮助
【发布时间】:2010-03-24 11:23:30
【问题描述】:

我的 SQL 和 HQL 不太好...

我有两个域:

class Hotel {
 String name
}

class Room {
 Hotel hotel
 float price
}

有多少家酒店至少有一个房间?

【问题讨论】:

    标签: sql grails hql grails-orm


    【解决方案1】:

    您可能希望建立这种双向关系。

    class Hotel {
     String name;
     List<Room> rooms;
    }
    
    class Room {
     Hotel hotel
     float price
    }
    

    然后是 HQL:

     from Hotel h where size(h.rooms) >= 1 
    

    将返回房间集合具有至少一个值的酒店。

    更多详情here.

    【讨论】:

    • 我知道这种方式,但我现在无法修改数据库结构(域)......也许将来会以这种方式完成,但现在我不能:(跨度>
    • 然后在普通 SQL 中:select count(), hotel.name from room join hotel on room.hotel_id = hotel.hotel_id group by hotel.hotel_id 有 count() > 1
    • 感谢您的建议。我已经以这种方式实现(所有字段都不为空,因此每个房间都有一个不为空的酒店字段): Room.executeQuery("select count(rm) from Room as rm group by rm.hotel")[0]