如何编写Grails GORM Hibernate查询
GORM新手,无法理解如何执行此查询。以下是我的域类(减去不必要的信息): 我的基本配置文件将始终有1或2个申请者。现在我使用的是hasMany,不过稍后我可能会在BasicProfile中使用Appliant1和Appliant2 我试图从伪sql中获得什么: 从基本配置文件中选择申请人对象,其中applicationNumber=1,BasicProfile.user.id==springSecurityService.principal.id 基本上,我正在尝试从基本配置文件中获取一个申请者对象,给定会话用户和申请者编号。您可以尝试:如何编写Grails GORM Hibernate查询,hibernate,grails,gorm,Hibernate,Grails,Gorm,GORM新手,无法理解如何执行此查询。以下是我的域类(减去不必要的信息): 我的基本配置文件将始终有1或2个申请者。现在我使用的是hasMany,不过稍后我可能会在BasicProfile中使用Appliant1和Appliant2 我试图从伪sql中获得什么: 从基本配置文件中选择申请人对象,其中applicationNumber=1,BasicProfile.user.id==springSecurityService.principal.id 基本上,我正在尝试从基本配置文件中获取一个申请
User user = User.get(...) //get's the user instance
BasicProfile.createCriteria().get {
eq('user', user)
applicants {
eq('applicantNumber', 1) //filter by applicantNumber
}
}
这个怎么样
User user = User.load(springSecurityService.principal.id)
def applicant = BasicProfile.findByUser(user)
.applicants?.find{it.applicantNumber == 1}
受DynamicFinder启发并使用DynamicFinder。这将返回基本配置文件对象。查询应该针对一个申请人对象,该对象的父对象是BasicProfile。哦,对了,您需要申请人。使用@dmahapatro的答案。在这种情况下,HQL可能更好,因为您将加载所有申请者以获得一个。@sérgioMichels事实上,basicProfile将只有最多2个申请人,如OP.:)@user2636133如果有用,则接受。::)
User user = User.load(springSecurityService.principal.id)
def applicant = BasicProfile.findByUser(user)
.applicants?.find{it.applicantNumber == 1}