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