ひがやすを技術ブログ

電通国際情報サービスのプログラマ

OracleでSELECT文を自動生成したときのバグ

s2dao1.0.4を入れてみる。
すると、selectのsql自動更新処理のとこで例外発生。
一個前のバージョンと比較してみると、
org.seasar.dao.dbms.Oracleの48行目のwhereBuf.setLength(whereBuf.length() - 5);
がループの外にでている。
この箇所を修正したら正常に動くようになったのですが、これはバグでしょうか?

OracleでSELECT文を自動生成させ、N:1のマッピングがない場合に、例外が発生しますね。
対応策は、whereBuf.setLength(whereBuf.length() - 5);を
if (whereBuf.length() > 0) {
の直後に移動します。


//whereBuf.setLength(whereBuf.length() - 5);
if (whereBuf.length() > 0) {
whereBuf.setLength(whereBuf.length() - 5);
buf.append(" WHERE ");
buf.append(whereBuf);
}
ご迷惑をおかけしますが、よろしくお願いします。