oracle - Grails .findAll()多次返回同一数据库行,这可能是什么原因引起的?

标签 oracle rest grails groovy hql

我有一个相当平凡的Oracle表,其中有7行。每行具有不同的值,有一个唯一的键可防止大多数列具有相似的数据。

在Grails Controller 中,我正在运行以下代码:

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客户端中返回的第一行(尽管从技术上讲,由于我没有使用任何订单,所以它根本不是第一行...不能保证订单等所有内容)。

到目前为止,我已经对其进行了多次“清理”。我当然已经多次停止并重新启动了应用程序,并且在调试和常规执行中都尝试了此操作。

对该代码的唯一更改是在域类中添加了另一列。但是时间与开始搞砸的时间并不吻合。新列实际上是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=?

最佳答案

我以前没有见过这个特定的问题,但是如果遇到这个问题,我会像这样调试它:

  • 打开Hibernate SQL调试,以便可以看到Grails向Oracle抛出的SQL。在Config.groovy log4j配置中,将“org.hibernate.SQL”添加到调试部分。然后,将该SQL从IntelliJ控制台复制粘贴到与Oracle连接的SQL客户端中,并查看返回的结果。
  • 在 Controller 中运行查询之前,请先执行println params.term
  • 在呈现响应之前将printAll的结果打印出来。
  • 关于oracle - Grails .findAll()多次返回同一数据库行,这可能是什么原因引起的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12460616/

    相关文章:

    sql - 是否可以防止 ORDS 转义我的 GeoJSON?

    sql - 在 Oracle SQL 中删除表

    java jsp显示数据库中的数据

    java - 在应用程序启动期间打印所有 REST 服务 URL

    node.js - TypeError : db. 集合不是函数

    grails - 字段插件-Grails表

    grails - 可为空的约束对mysql表中的列没有任何影响

    sql - Oracle - 删除表约束而不删除表

    apache - 如何使用 Apache Nifi 查询 REST API?

    grails - 从集成测试中的服务访问 servletContext