Hibernate GORM&x27;s,其中用“关闭”;在;查询将删除生成的SQL中的where子句

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_

源代码:

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_ 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,然后重新运行测试