grails命名查询返回不正确的数据

grails命名查询返回不正确的数据,grails,gorm,Grails,Gorm,我在域类中有一个简单的查询 inventoryItems { String partNumber, String serialReference, Vendor vendor -> def c = InventoryMaster.createCriteria() def results = c.list { if(partNumber) { println "part .. ${partN

我在域类中有一个简单的查询

   inventoryItems { String partNumber, String serialReference, Vendor vendor ->

        def c = InventoryMaster.createCriteria()

        def results = c.list {

            if(partNumber) {
                println "part  .. ${partNumber} ..."
                part {
                    eq 'partNumber', partNumber
                }
            }

            if(vendor) {
                println "vendor  .. ${vendor} ... "
               part {
                    eq 'vendor', vendor
                }
            }

            if(serialReference) {
                println "serial reference .. ${serialReference}"
                eq 'serialReference', serialReference
            }

        }

        results

    }
我称之为提供2个参数,最初为serialReference和vendor,它正确返回2个项。。我通过添加第三个param partNumber对其进行了优化,它错误地返回了2个项,而不是预期的1个项。。我打开了sql日志记录,复制了生成的stmt,并在dbconsole中运行它,在那里它正确地返回了预期的1项。。我没有打开可以看到的缓存,并且正在运行Grails2.3.7。。谁能告诉我我做错了什么或是什么导致了这一切


谢谢

我认为您可以通过以下方式简化查询:

inventoryItems { String partNumber, String serialReference, Vendor vendor ->

    part {
        if(partNumber) {
            println "part  .. ${partNumber} ..."
            eq 'partNumber', partNumber
        }
        if(vendor) {
            println "vendor  .. ${vendor} ... "
            eq 'vendor', vendor
        }
    }


    if(serialReference) {
        println "serial reference .. ${serialReference}"
        eq 'serialReference', serialReference
    }
}

为什么要从命名查询中调用InventoryMaster.createCriteria?正确,我很愚蠢。。对不起,我不应该工作这么晚