Thread Rating:
  • 246 Vote(s) - 2.79 Average
  • 1
  • 2
  • 3
  • 4
  • 5
iBatis で正常なクエリなのにエラーになる
01-16-2014, 06:02 PM,
#1
iBatis で正常なクエリなのにエラーになる
Curl に直接関係する問題ではないのですが、
サーバ側で、DBにアクセスする際に、iBatis を利用しており、
同一の SQL-ID を利用しているのに、初回はうまくいき、
2回目はエラー(java.sql.SQLException: Column not found:)になる、
という現象が起きています。


対象のSQLは、集約条件をパラメタで渡すようなSELECT文なのですが、
発行されたSQLをログ出力し、そのSQLをツール(SQL Developer)で流してみると、
問題なく結果が返却されます。

SQL文自体が正常ということは、利用しているiBatis のバグなのかな、
と思うのですが、同様の問題は、他のCurl 案件で起きていないでしょうか。
Reply
01-16-2014, 06:10 PM,
#2
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

Reply

Forum Jump:


Users browsing this thread:
1 Guest(s)

MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: 'mybb_threadviews' (errno: 2)
Query:
INSERT INTO mybb_threadviews (tid) VALUES('1029')