获取grails中子类的行数

时间:2015-07-06 11:07:05

标签: grails gorm

我有两个类似于以下的域类:

class NumberPattern {

String name
String desc

static hasMany = [dns : NumberPatternDNs]

static mapping = {
    table 'ni_regexp_ud_def'
    version false
    name column: 'NAME'
    desc column: 'DESCRIPTION'
    id column: 'REGEXP_UD_DEF_PK'
 }

}

并且

class NumberPatternDNs implements Serializable{

String dn

static belongsTo = [pattern : NumberPattern]

static mapping = {
    table 'ni_regexp_ud_match'
    dn column : 'DN_VALUE'
    version false
    pattern column : 'REGEXP_UD_DEF_FK'
    id composite: ['pattern', 'dn']
 }

}

现在我在做NumberPatter.findAll(),它返回父类和子类的所有行(对应相应的FK值)。我想要的不是获取子行,而应该只获取行数即可。 我如何实现这一目标?

1 个答案:

答案 0 :(得分:0)

目前尚不清楚您需要哪种格式的行数,因此这里有一个选项

select region,
       count(case when status = 'valid' then 1 end) as valid,
       count(case when status = 'invalid' then 1 end) as invalid
from tablename
group by region

或者,如果您需要一张地图中的所有数据:

NumberPattern.findAllByName('name').collect { np ->
    [numberPattern: np, dnsCount: np.dns.size()]
}

或者你可以使用hql查询:

NumberPattern.findAllByName('name').collect { np ->
    new HashMap(np.properties) + [dnsCount: np.dns.size()]
}