hibernate查询-grails
我是grails的新手,对hibernate不太熟悉。我遇到了一个关于在grails中使用executeQuery进行hibernate查询的问题。我只是将此代码与有问题的原始代码进行了类似: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("""
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)
}
}