grails - 在域类中调用overriden getter

时间:2016-08-29 16:25:32

标签: grails

我正在使用Grails 2.4.4。我有域名

class Purchase {
    static hasMany = [dataList:DataByPeriod]
    String name

    Set<DataByPeriod> dataList
    public Set<DataByPeriod> getDataList(){
        dataList?.findAll { (!it.isDeleted) }
    }

    def getPeriodList(){
        this.dataList?.period?.unique()?.sort{it.name}
    }
}

另外两个:

class DataByPeriod {
    static belongsTo = [purchase:Purchase, period:Period]
    Long value
}
class Period {
    static hasMany = [dataList:DataByPeriod]
    String name
}

现在我想收到给定purchaseInstance的所有期间。如果我这样做:

purchaseInstance?.dataList?.period?.unique()?.sort{it.name}

我会获得正确的数据(dataList的getter将被调用,所有isDeleted==true的记录都将被忽略

但如果我这样做:     purchaseInstance?.getPeriodList() 将不会调用getter并显示所有记录?

为什么会这样?为什么我甚至无法将'getPeriodList()`方法更改为:

def getPeriodList(){
    this.getDataList()?.period?.unique()?.sort{it.name}
}

它表示“没有方法getDataList()用于类购买”。

0 个答案:

没有答案