grails 命名查询返回不正确的数据
Posted
技术标签:
【中文标题】grails 命名查询返回不正确的数据【英文标题】:grails named query returns incorrect data 【发布时间】:2014-09-26 13:55:08 【问题描述】:我在域类中有一个简单的查询..
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 和供应商),它正确返回 2 个项目。我通过添加第三个参数(partNumber)对其进行优化,它不正确返回 2 个项目而不是1 预期 .. 我打开了 sql 日志记录,复制了生成的 stmt 并在 dbconsole 中运行它 正确 返回了预期的 1 项 .. 我有 no 缓存切换我可以看到并且正在运行 grails 2.3.7 .. 任何人都可以建议我做错了什么或者是什么原因造成的?
谢谢。
【问题讨论】:
你为什么从命名查询中调用InventoryMaster.createCriteria()
?
你说得对,我很愚蠢..对不起,不应该工作这么晚
【参考方案1】:
我认为您可以通过以下方式简化查询:
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
【讨论】:
以上是关于grails 命名查询返回不正确的数据的主要内容,如果未能解决你的问题,请参考以下文章