在grails域类中,如何重写字段的一对多关系的getter和setter方法?我知道如何覆盖作为单个对象的字段的 getter 和 setter ,但是我对集合有问题。这是我的情况:

我有实体域类,其中有许多标题。现在,我想覆盖标题的getter,以仅获取带有isActive等于true的标题的标题。我已经尝试过类似的方法,但是它不起作用:

class Entity {

    static hasMany = [
        titles: Title
    ]

    public Set<Title> getTitles() {
        if(titles == null)
            return null
        return titles.findAll { r -> r.isActive == true }
    }

    public void setTitles(Set<Title> s) {
        titles = s
    }
}

class Title {
    Boolean isActive

    static belongsTo = [entity:Entity]

    static mapping = {
        isActive column: 'is_active'
        isActive type: 'yes_no'
    }
}

感谢您的帮助。

最佳答案

需要引用Set<Title> titles

class Entity {
    Set<Title> titles

    static hasMany = [
        titles: Title
    ]

    public Set<Title> getTitles() {
        if(titles == null)
            return null;
        return titles.findAll { r -> r.isActive == true }
    }

    public void setTitles(Set<Title> s) {
        titles = s
    }
}

关于grails - 覆盖grails域类中的getter和setter以获得关系,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17169657/

10-10 10:06