Hibernate GORM&x27;s,其中用“关闭”;在;查询将删除生成的SQL中的where子句
源代码: Grails版本:3.2.8 我正在尝试运行以下查询:Hibernate GORM&x27;s,其中用“关闭”;在;查询将删除生成的SQL中的where子句,hibernate,grails,gorm,Hibernate,Grails,Gorm,源代码: Grails版本:3.2.8 我正在尝试运行以下查询: def query = UserData.where { teams { id in teamIds } } 在Spock测试中运行查询时,它工作正常。当从Grails服务运行它时,它将返回UserData中的所有行,并且不会在teamIds列表中仅过滤出属于团队的用户 斯波克试验 从Spock测试运行查询-始终通过 生成的SQL select count(*) as y0_ from user_data this_
def query = UserData.where {
teams { id in teamIds }
}
在Spock测试中运行查询时,它工作正常。当从Grails服务运行它时,它将返回UserData中的所有行,并且不会在teamIds列表中仅过滤出属于团队的用户
斯波克试验
从Spock测试运行查询-始终通过
生成的SQL
select count(*) as y0_
from user_data this_ inner join workflow_role_teams teams3_
on this_.id=teams3_.user_data_teams_id inner join role teams_alia1_
on teams3_.role_id=teams_alia1_.id
where teams_alia1_.id in (?)
limit ?
select count(*) as y0_
from user_data this_ inner join workflow_role_teams teams3_
on this_.id=teams3_.user_data_teams_id inner join role teams_alia1_
on teams3_.role_id=teams_alia1_.id
limit ?
从Grails服务运行查询
偶尔在IntelliJ中传递,从不形成CLI
exampleService.getMyOrMyTeamsData
def getMyOrMyTeamsData(User me) {
def teamIds = me.getAuthorities().id
def query = UserData.where {
teams { id in teamIds }
}
return query
}
生成的SQL
select count(*) as y0_
from user_data this_ inner join workflow_role_teams teams3_
on this_.id=teams3_.user_data_teams_id inner join role teams_alia1_
on teams3_.role_id=teams_alia1_.id
where teams_alia1_.id in (?)
limit ?
select count(*) as y0_
from user_data this_ inner join workflow_role_teams teams3_
on this_.id=teams3_.user_data_teams_id inner join role teams_alia1_
on teams3_.role_id=teams_alia1_.id
limit ?
解决方案
请参阅解决方案处
问题在这里得到了回答: 在grails app/domain/oneisone/UserData.groovy中
List teams = new ArrayList()
改为
List<Role> teams = new ArrayList()
List teams=new ArrayList()
运行grails clean,然后重新运行测试 问题在这里得到了回答: 在grails app/domain/oneisone/UserData.groovy中
List teams = new ArrayList()
改为
List<Role> teams = new ArrayList()
List teams=new ArrayList()
运行grails clean,然后重新运行测试