簡體   English   中英

grails命名查詢返回不正確的數據

[英]grails named query returns incorrect data

我在域類中有一個簡單的查詢..

   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項。.我通過添加第三個參數(partNumber)對其進行了優化,並且它錯誤地返回了2項,而不是預期的1項。 ,復制生成的stmt並在dbconsole中運行它,在它正確返回了預期的1項的地方..我沒有打開緩存,我可以看到它並且正在運行grails 2.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
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM