Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写Grails GORM Hibernate查询_Hibernate_Grails_Gorm - Fatal编程技术网

如何编写Grails GORM Hibernate查询

如何编写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 基本上,我正在尝试从基本配置文件中获取一个申请

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}