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

时间:2014-09-26 13:55:08

标签: grails gorm

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

   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和供应商)并正确返回2个项目。我通过添加第三个参数(partNumber)来改进它,并且错误返回2个项目而不是1预期..我已启用sql日志记录,复制生成的stmt并将其运行到dbconsole,其中正确返回预期的1项。我有缓存切换在那我可以看到并且正在运行grails 2.3.7 ..任何人都可以建议我做错了什么或是什么导致了这个?

感谢。

1 个答案:

答案 0 :(得分:0)

我认为您可以使用以下内容简化查询:

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
    }
}