[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 メーリングリストの案内