GORM新手,无法想象如何进行此查询。这是我的域类(减去不必要的信息):
User {...} //domain object (from springsecurity)
BasicProfile {
User user
static hasMany = [applicants:Applicant]
}
Applicant {
static belongsTo = BasicProfile
int applicantNumber
}
我的BasicProfile将始终有1或2个申请人。现在我正在使用hasMany,虽然我可能会在以后的BasicProfile中改用applicant1和applicant2。
我想在伪sql中得到什么:
从BasicProfile中选择申请人对象,其中applicantNumber = 1,BasicProfile.user.id == springSecurityService.principal.id
基本上我是在尝试从BasicProfile获取一个Applicant对象,给定会话用户和applicantNumber。
答案 0 :(得分:2)
这个怎么样?
User user = User.load(springSecurityService.principal.id)
def applicant = BasicProfile.findByUser(user)
.applicants?.find{it.applicantNumber == 1}
受Burt's answer的启发并使用dynamicFinders。
答案 1 :(得分:1)
您可以尝试:
User user = User.get(...) //get's the user instance
BasicProfile.createCriteria().get {
eq('user', user)
applicants {
eq('applicantNumber', 1) //filter by applicantNumber
}
}