过滤'belongsTo'结果

时间:2014-11-24 18:22:54

标签: grails groovy gorm grails-domain-class grails-controller

我是grails的新手,并且在没有能够提出这类问题的人的情况下尝试理解它是一项艰巨的工作。 我有以下问题。这是我的两个域类: Pagadora Calculo

Pagadora.groovy

class Pagadora {
     String nombre
     Boolean activo
     static hasMany = [calculoIMSS: Calculo, calculoPagado: Calculo, calculoConvenio: Calculo]
     static mappedBy = [calculoIMSS: 'imss', calculoPagado:'pagadoPor', calculoConvenio:'convenio']
}

布尔变量 activo 指的是“Pagadora”是否会出现在Calculo类中视图的“选择列表”中

Calculo.groovy

class Calculo {
    String nombre
    BigDecimal sueldo
    static belongsTo = [imss:Pagadora, pagadoPor:Pagadora, convenio:Pagadora]
}

我想要的是以下内容,我想在选择中过滤,只有活跃的Pagadoras

 <g:select id="imss" name="imss.id" from="${Pagadora.Pagadora.list(sort: "nombre", order: "asc")}" optionKey="id" required="" value="${calculoInstance?.imss?.id}" class="many-to-one form-control" noSelection="['':'-Escoja la empresa-']" />    

抱歉如果我有点难以理解,但对我来说有点难以用英语解释这样的事情(我的母语是西班牙语:P)

1 个答案:

答案 0 :(得分:1)

如果要获取所有活动条目,请将from属性更改为:

from="${Pagadora.findAllByActivo(true) [sort: 'nombre', order: 'asc']}"

这是dynamic finder

Jeff在注释中指出这里的布尔参数可以省略(参见findAllBy的例子)。如果您想获取所有非活动条目,您仍然可以通过命名查找器findAllByNotActivo来不使用参数。当你的finder有两个参数,其中一个是布尔值时,这会特别方便。