简体   繁体   中英

grails named query returns incorrect data

I have a simple query in a domain class ..

   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

    }

I call this providing 2 params initially (serialReference and vendor) and it correctly returns 2 items .. I refine it by adding a third param (partNumber) and it incorrectly returns 2 items instead of the 1 expected .. I have sql logging switched on , copied the generated stmt and ran it tru the dbconsole where it correctly returned the 1 item expected .. I have no caching switched on that I can see and am running grails 2.3.7 .. Can anyone suggest what i'm doing wrong or what is causing this?

Thanks.

I think you can simplify the query a bit with something like this:

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM