[Seasar-user:3815] S2Daoのバッチ更新と「beanのプロパティがnullのカラムの除外」について
jazzatny
[E-MAIL ADDRESS DELETED]
2006年 6月 8日 (木) 21:44:18 JST
佐藤です。お世話になっております。
(すみません、ひょっとしたら同様の投稿が別の者からあるかもしれませ
ん。)
現在、S2Dao 1.0.34, S2Container 2.3.10にあげるべく確認中です。
ところが、S2Daoでバッチ更新を行う際に、以下の機能のために期待した
結果が得られません。
> [Seasar-user:3549] S2Dao 1.0.33 リリース
> - 自動生成されるINSERT文から、beanのプロパティがnullのカラム
> を除外するようにしました。これにより、Tableへ定義してある
> DEFAULT値を活かすことができます。
この機能は、バッチ更新の際に、引数のリストのインデックス0のインス
タンスの内容をもとにSQLを組み立てているようですが、それ以降の
インデックスのインスタンスのプロパティがnullでないときも、値が
セットされなくなってしまいます。
何か対処法はありますでしょうか?
-- 検証用コード(抜粋)とログ
-- Bean
public class Test {
public static final String TABLE = "TEST_TBL";
private int seqno;
private String pname;
private Timestamp odate;
public Test() {
}
/*getter, setter割愛*/
}
-- Dao
public interface TestDao {
public static final Class BEAN = Test.class;
public int insert(List list);
}
-- テストメソッド
public void testInsert_Tx() {
List list = new ArrayList();
Test t1 = new Test();
t1.setSeqno(1);
t1.setPname(null);
t1.setOdate(null);
Test t2 = new Test();
t2.setSeqno(2);
t2.setPname("hoge");
t2.setOdate(new Timestamp(Calendar.getInstance().getTimeInMillis()));
list.add(t1); // 順番を
list.add(t2); // かえる
dao.insert(list); // 期待外のSQL文
list.clear();
t1.setSeqno(3);
t2.setSeqno(4);
list.add(t2); // 順番を
list.add(t1); // かえる
dao.insert(list); // 期待していたSQL文
}
-- ログ
DEBUG 2006-06-08 21:24:17,975 [main] トランザクションを開始しました
DEBUG 2006-06-08 21:24:18,068 [main] 物理的なコネクションを取得しました
DEBUG 2006-06-08 21:24:18,146 [main] 論理的なコネクションを取得しました
DEBUG 2006-06-08 21:24:18,537 [main] 論理的なコネクションを閉じました
DEBUG 2006-06-08 21:24:18,537 [main] 論理的なコネクションを取得しました
DEBUG 2006-06-08 21:24:18,553 [main] INSERT INTO TEST_TBL (seqno) VALUES
(1)
DEBUG 2006-06-08 21:24:18,568 [main] INSERT INTO TEST_TBL (seqno) VALUES
(2)
DEBUG 2006-06-08 21:24:18,568 [main] 論理的なコネクションを閉じました
DEBUG 2006-06-08 21:24:18,568 [main] 論理的なコネクションを取得しました
DEBUG 2006-06-08 21:24:18,584 [main] INSERT INTO TEST_TBL (seqno, pname,
odate)
VALUES (4, 'hoge', '2006-06-08
21.24.17')
DEBUG 2006-06-08 21:24:18,600 [main] INSERT INTO TEST_TBL (seqno, pname,
odate)
VALUES (3, null, null)
DEBUG 2006-06-08 21:24:18,600 [main] 論理的なコネクションを閉じました
DEBUG 2006-06-08 21:24:18,600 [main] トランザクションをロールバックしました
DEBUG 2006-06-08 21:24:18,709 [main] 物理的なコネクションを閉じました
-------
よろしく、お願いします。
Seasar-user メーリングリストの案内