我有一对多关系,每组有多个职位,即
Group -1----N- Position
class Group {static hasMany = [postions:Position}
如果我有一个特定的组实例,我不能直接计算它有多少个位置?即调用一些方法group.positions。??
由于
答案 0 :(得分:8)
正如OverZealous所说,你可以调用group.positions.size()
,但对于大量的Position
来说它会非常昂贵,因为它会将所有这些加载到内存中以便对它们进行计数,然后将它们丢弃
如果您的Position
课程对其拥有的Group
课程有反向引用,例如static belongsTo = [group: Group]
,然后您可以使用此轻量级查询:
def group = ...
int positionCount = Position.countByGroup(group)
如果您没有双向关系,可以通过HQL获取计数:
def group = ...
int positionCount = Group.executeQuery(
'select count(pos) from Group g ' +
'inner join g.positions pos where g=:g', [g: group])[0]