2014-09-26 96 views
0

我有一個領域類的簡單查詢..的Grails返回不正確的數據

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個PARAMS(serialReference和供應商),它正確返回2項..我完善它通過添加第三個參數(partNumber),它不正確返回2項,而不是預期的1 ..我有sql日誌打開,複製生成的stmt並運行它tru的dbconsole它正確返回1期望的項目..我有沒有緩存打開,我可以看到並且正在運行grails 2.3.7 .. Can an你提示我做錯了什麼或者是什麼原因造成了這種情況?

謝謝。

+0

爲什麼你從命名的查詢中調用'InventoryMaster.createCriteria()'? – 2014-09-26 14:42:32

+0

你的正確,我很蠢..對不起,不應該這麼晚 – user3914455 2014-09-26 15:56:46

回答

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