1

GORM 新手,不知道如何进行此查询。这是我的域类(减去不必要的信息):

User {...} //domain object (from springsecurity)

BasicProfile {
   User user
   static hasMany = [applicants:Applicant]
}

Applicant {
   static belongsTo = BasicProfile
   int applicantNumber
}

我的 BasicProfile 将始终有 1 或 2 个申请人。现在我正在使用hasMany,但我可能会在稍后切换到BasicProfile 中有一个appliance1 和appliance2。

我想在伪 sql 中得到什么:

从 BasicProfile 中选择申请者对象,其中申请者编号 = 1 且 BasicProfile.user.id == springSecurityService.principal.id

基本上,我试图从 BasicProfile 中取回申请人对象之一,给定会话用户和申请人编号。

4

2 回答 2

2

这个怎么样?

User user = User.load(springSecurityService.principal.id)
def applicant = BasicProfile.findByUser(user)
                            .applicants?.find{it.applicantNumber == 1}

Burt 的回答启发并使用 dynamicFinders。

于 2013-09-10T17:11:36.680 回答
1

你可以试试:

User user = User.get(...) //get's the user instance
BasicProfile.createCriteria().get {
  eq('user', user)
  applicants {
    eq('applicantNumber', 1) //filter by applicantNumber
  }
}
于 2013-09-10T17:06:04.567 回答