在grails域类中重写关系的getter和setter

在grails域类中重写关系的getter和setter,grails,gorm,Grails,Gorm,如何覆盖grails域类中一对多关系字段的getter和setter?我知道如何覆盖作为单个对象的字段的getter和setter,但我对集合有问题。我的情况如下: 我有实体域类,它有许多标题。现在,我想覆盖getter for titles,只获取带有isActive等于true标志的标题。我尝试过类似的方法,但不起作用: class Entity { static hasMany = [ titles: Title ] public Set<

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

我有实体域类,它有许多标题。现在,我想覆盖getter for titles,只获取带有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'
    }
}
类实体{
静态hasMany=[
标题:标题
]
公共集getTitles(){
如果(标题==null)
返回空
返回titles.findAll{r->r.isActive==true}
}
公共无效集合标题(集合){
标题=s
}
}
职称{
布尔非活动
静态belongsTo=[实体:实体]
静态映射={
isActive列:“是否处于活动状态”
isActive类型:“是\否”
}
}

谢谢您的帮助。

需要参考
设置标题

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
    }
}
类实体{
设置标题
静态hasMany=[
标题:标题
]
公共集getTitles(){
如果(标题==null)
返回null;
返回titles.findAll{r->r.isActive==true}
}
公共无效集合标题(集合){
标题=s
}
}

您会遇到什么错误?对这个需求背后的推理感兴趣,为什么不使用单独的方法呢?现在,如果您需要添加检索所有标题的功能,则必须编写默认支持的单独方法。请注意:。简而言之,请确保您的Setter和getter不更改该值,否则将混淆休眠。Setter也应更改为:public void setTitles(Set s){titles=s;},然后一切正常。@kpater87更正,谢谢。我只是抄袭了你的问题来说明你真正需要做什么。同时更新问题。