私は、7行のかなり平凡な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 デバッガーでその用語が正しいことを確認できます。先週のある時点まで、この特定のコード スニペットは正しく機能していました... 私の問題は、返された json データを利用するために Backbone と jQuery を取得することに関連していました。
今、私が期待する 7 行のデータを返す代わりに、同じ行を 7 回返します。この行は、たまたま Oracle クライアントで返される最初の行です (ただし、技術的に言えば、order by を使用していなかったので、最初の行ではありません... 順序などの保証はありません)。
これまでのところ、複数の「grails clean」を実行しました。もちろん、アプリケーションを複数回停止して再起動し、デバッグと通常の実行の両方でこれを試しました。
このコードへの唯一の変更は、ドメイン クラスに別の列を追加したことです。しかし、タイミングは、これが台無しになり始めた時期とうまく対応していません。新しい列は、実際には Oracle の ROWID でした。これが機能するとは思っていませんでしたが、別の問題を解決しやすくしました。ただし、それを削除しても、これは機能するようにはなりません。
誰でもこの動作を説明できますか?
[編集] 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=?