01-16-2014, 06:02 PM,
|
|||||
|
|||||
iBatis で正常なクエリなのにエラーになる
Curl に直接関係する問題ではないのですが、
サーバ側で、DBにアクセスする際に、iBatis を利用しており、 同一の SQL-ID を利用しているのに、初回はうまくいき、 2回目はエラー(java.sql.SQLException: Column not found:)になる、 という現象が起きています。 対象のSQLは、集約条件をパラメタで渡すようなSELECT文なのですが、 発行されたSQLをログ出力し、そのSQLをツール(SQL Developer)で流してみると、 問題なく結果が返却されます。 SQL文自体が正常ということは、利用しているiBatis のバグなのかな、 と思うのですが、同様の問題は、他のCurl 案件で起きていないでしょうか。 |
|||||
01-16-2014, 06:10 PM,
|
|||||
|
|||||
RE: iBatis で正常なクエリなのにエラーになる
エラーになるSELECT文は、条件に応じて項目数が動的に変わるため、
検索結果(iBatis でいうところのresultClass)をHashMap にしていますが、 初回と、2回目で集約条件となるパラメタを変更しています。 どうやら、以前のクエリ発行時に作成したHashMap を、iBatis側でキャッシュしているため 初回にキャッシュしたHashMpaに対して、 2回目で取得した項目をセットしようとしたとき、 検索結果の項目数に差があると、 キャッシュしているHashMap に対してキーがないため、エラーになる、ということのようです。 とりあえず、項目の増減が発生しないように、すべての項目をハッシュのキーに指定するようにし、 利用しない項目については、値をnullにして判断するよう修正して対応しました。 iBatisの設定として、select タグに remapResults="true" を設定すれば、キャッシュをクリアしてくれるようですが、 こちらはまだ試していないです。 http://www.sorich.jp/blog/shimamura/2008...elect.html |
|||||
« Next Oldest | Next Newest »
|
Users browsing this thread:
2 Guest(s)
2 Guest(s)