我有两个类似于以下的域类:
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值)。我想要的不是获取子行,而应该只获取行数即可。
我如何实现这一目标?
答案 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()]
}