为什么Grails没有返回我想要的东西?

时间:2010-08-17 20:23:24

标签: hibernate grails criteria

这是我正在使用的域类:

class Foo {
    String name,
           type

    static hasMany = [ bars: Bar ]

    List bars

    static mapping = {
        bars lazy:false
    }
}

class Bar {
    String value
    static belongsTo = Foo
}

我编写了一些Criteria查询,以便为用户提供查询界面。界面提供下拉列表以选择Bar的特定值。当用户尝试为Bar类指定值并希望获取相关的Foos时,会发生此问题。这是Criteria查询:

def query = {
    and {
        if (params.name && params.name != '') {
            ilike('name', "%${params.name}%")
        }
        if (params.type && params.type != '') {
            ilike('type', "%${params.type}%")
        }
        if (params.value && params.value != '') {
            bars {
                eq("value", params.value)  
            }
        }
    }
}

def results = Foo.createCriteria().list(params,query)

基本上,看起来正在发生的事情是,只有与Foo对象一起返回与指定值匹配的Bars,即使Foo对象具有与该对象不匹配的其他Bars。我希望它返回所有的条形码,因为我正在查询Foo的匹配条形。

有什么想法吗?需要进一步澄清吗?

1 个答案:

答案 0 :(得分:1)

根据grails guide,您的查询看起来很好。

我在Foo对象中看到了问题。尝试删除List bars。与Bar的关系已定义为static hasMany = [ bars: Bar ]

更新

我会从grails guide开始。实施他们的例子。然后尝试将其更改为我的解决方案一步一步。你会看到问题所在。