GORM grails withCriteria查询

时间:2015-11-08 15:43:34

标签: grails gorm

我有3个域名: 1)用户 2)简介 3)医生

1)医生扩展用户 2)用户hasOne个人资料

class User {
    String username
    String password
    static hasOne = [profile: Profile]
}

class Profile {
    String fullName
    String address
    String cellno
}

class Doctor {
    String workLocation
    String specialization
}

如何编写GORM查询以根据专业化列出所有医生,workLocation列出姓名profile.fullName

1 个答案:

答案 0 :(得分:0)

Doctor扩展User以来,我假设Doctor域类看起来像这样:

class Doctor extends User {
    String workLocation
    String specialization
}

您可以使用GORM查询获取Doctor个实例的列表,如下所示:

def location = 'someWorkLocation'
def spec = 'someSpecialization'

def doctors = Doctor.withCriteria {
    eq 'specialization', spec
    eq 'workLocation', location
}.list()

上述查询使用eq()方法指定WHERE条件。如果您想要全名而不是Doctor个实例,则需要进行投影:

def names = doctors.withCriteria {
    eq 'specialization', spec
    eq 'workLocation', location

    projections {
        profile {
            property 'fullName'
        }
    }
}

投影基本上是查询的SELECT部分。