如何根据某些关联获取对象?

时间:2014-11-17 19:31:33

标签: grails groovy gorm has-many

我有以下域类(仅尝试显示获取想法所需的内容):

class Scholarship {

   static hasMany = [grades:Grade]
}

class Grade {

   String id
   String description
}

我想说的话,"获得相关grade_id = myId"的所有奖学金。我想使用grails域类而不是使用sql来实现这一点。任何帮助表示赞赏

1 个答案:

答案 0 :(得分:2)

你在找这样的东西吗?...

def results = Scholarship.withCriteria {
    grades {
        // myId must be defined somewhere above...
        idEq myId
    }
}

修改

下面的评论会增加原始问题,并询问如果表达另一种关系会是什么......

class Scholarship {
    static hasMany = [grades:Grade,majors:Major]     
}

我上面显示的查询仍然完全相同。除非您想要将majors的某些属性包含在标准的一部分中,否则存在Major集合的事实将无关紧要,这可能看起来像这样......

def results = Scholarship.withCriteria {
    grades {
        // myId must be defined somewhere above...
        idEq myId
    }

    majors {
        // only return Scholarship instances which
        // contain a Major with the name 'Mechanical Engineering'
        eq 'name', 'Mechanical Engineering'
    }
}

我希望有所帮助。