2014-09-26 81 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 
    } 
}