我有一个相当平凡的Oracle表,有七行。每行都有不同的值,有一个唯一的键可以使大多数列保持相似的数据。
在Grails控制器中,我运行以下代码:
else if (request.method == "GET" && params.term) {
def a = WaiverExemption.findAll("from WaiverExemption as e where e.exemptionTermCode.id = ?", [parseLong(params.term)]) as JSON
a.render(response)
return false
}
浏览器正在向此发出正确的请求。它传入一个有效的术语,在IntelliJ调试器中,我可以看到该术语是正确的。直到上周某个时候,这段特殊的代码片段工作正常...我的麻烦与获取Backbone和jQuery以使用返回的json数据有关。
现在,它不是返回我期望的7行数据,而是返回同一行7次。这一行碰巧是Oracle客户端返回的第一行(虽然因为我没有使用任何订单,从技术上讲,它根本不是第一行......不保证订单和所有这些)。
到目前为止,我已经完成了多个“grails clean”。我当然已多次停止并重新启动应用程序,并且我已经在调试和常规执行中尝试了这一点。
此代码的唯一更改是在域类中添加了另一列。但是时间与这个开始搞砸时并不相符。新专栏实际上是Oracle的ROWID,我没想到会这样做,但确实让另一个问题更容易解决。但是,删除它并不会使其恢复正常工作。
任何人都可以解释这种行为吗?
[edit]根据要求修复config.groovy后的调试结果:
2012-09-17 10:26:02,675 [http-bio-8080-exec-7] DEBUG hibernate.SQL - select waiverexem0_.EXEMPTION_TERM_CODE as EXEMPTION1_26_, waiverexem0_.exemption_activity_date as exemption2_26_, waiverexem0_.exemption_classification as exemption3_26_, waiverexem0_.exemption_code as exemption4_26_, waiverexem0_.exemption_pay_type as exemption5_26_, waiverexem0_.exemption_priority as exemption6_26_, waiverexem0_.ROWID as ROWID7_26_, waiverexem0_.exemption_term_code as exemption1_26_, waiverexem0_.exemption_user_id as exemption8_26_ from TT_ST_GRADUATE_EXEMPTION waiverexem0_ where waiverexem0_.exemption_term_code=?
答案 0 :(得分:2)
之前我没有看到这个特定的问题,但是我遇到它我会像这样调试它:
println params.term