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
hibernate查询-grails_Hibernate_Grails_Executequery - Fatal编程技术网

hibernate查询-grails

hibernate查询-grails,hibernate,grails,executequery,Hibernate,Grails,Executequery,我是grails的新手,对hibernate不太熟悉。我遇到了一个关于在grails中使用executeQuery进行hibernate查询的问题。我只是将此代码与有问题的原始代码进行了类似: def nonMemberList = Group.executeQuery("select gp.name from Group gp where gp.status = 'CONFIRMED_MEMBER'") def FemaleMemberList = Group.executeQuery("""

我是grails的新手,对hibernate不太熟悉。我遇到了一个关于在grails中使用executeQuery进行hibernate查询的问题。我只是将此代码与有问题的原始代码进行了类似:

def nonMemberList = Group.executeQuery("select gp.name from Group gp where gp.status = 'CONFIRMED_MEMBER'")
def FemaleMemberList = Group.executeQuery(""" select sum(case when g.isMale = false and g.name not in(:isNotConfirmedMember) from Group g where :startDate <= g.dateCreated and g.dateCreated < :endDate""",
[isNotConfirmedMember: nonMemberList, startDate: startDate, endDate: endDate])
def nonMemberList=Group.executeQuery(“从组gp中选择gp.name,其中gp.status='CONFIRMED_MEMBER'))

def FemaleMemberList=Group.executeQuery(“”从组g中选择sum(g.isMale=false且g.name不在(:isNotConfirmedMember时的情况),其中:startDate是否尝试使用标准?位于此处:

请首先为非成员列表尝试下面的代码,查看它是否生成空值:

//non member list code
def cNonMember = Group.createCriteria()
def nonMemberList = cNonMember.list() {
    eq("name", "CONFIRMED_MEMBER")
}

希望有帮助。

我不确定grails语法,但我想您可以试试

select sum(case when g.isMale = false " + (nonMemberList == null ? "" : "and g.name not in(:isNotConfirmedMember)") + " from Group g where :startDate <= g.dateCreated and g.dateCreated < :endDate

从g组中选择sum(g.isMale=false“+(nonMemberList==null?”:“和g.name不在(:isNotConfirmedMember)”)+”其中:startDate好吧,我觉得你要找的是女性成员,如果你不需要单独的非成员列表,那么你可以使用如下方式获得女性成员列表:

def c = Group.createCriteria()
def females = c.list {
    le('startDate', startDate)
    lt('dateCreated', endDate)
    and {
       ne('status', 'CONFIRMED_MEMBER')
       eq('isMale', false)
    }
}

在您的示例中,您似乎也有一个不完整的投影,如果您只想要女性成员的计数或某些属性的总和,您应该能够将其添加到上面。

非成员列表不可能为空,但可能为空。第二个查询在空列表中无效,我相信您无法在
操作中执行
空集合上的操作
def c = Group.createCriteria()
def females = c.list {
    le('startDate', startDate)
    lt('dateCreated', endDate)
    and {
       ne('status', 'CONFIRMED_MEMBER')
       eq('isMale', false)
    }
}