[Seasar-user:21239] Re: Domaでquery.isBatchSupported()がfalseのときbatch insertで期待する値が返らない

Taichi Uragami [E-MAIL ADDRESS DELETED]
2011年 12月 24日 (土) 23:20:34 JST


うらがみ(backpaper0)です。

早速の御対応ありがとうございます。
修正版での試行で結果が期待通りになることを確認できました。

2011年12月24日21:56 Toshihiro Nakamura <[E-MAIL ADDRESS DELETED]>:
> 中村です。
>
> 報告ありがとうございます。
> ご指摘のとおりDomaの不具合でした。
> 修正してSNAPSHOT作成しましたので
> よければお試しください。
>
> http://maven.seasar.org/maven2-snapshot/org/seasar/doma/doma/1.20.1-SNAPSHOT/doma-1.20.1-20111224.125038-2.jar
>
> 2011年12月24日16:51 Taichi Uragami <[E-MAIL ADDRESS DELETED]>:
>> うらがみ(backpaper0)と申します。
>> 表題の通り、Domaのbatch insertで期待する値が返らない場合がありました。
>> 再現したコードはこちらになります。https://github.com/backpaper0/ormappers/blob/master/src/test/java/sample/DomaSample.java#L77
>> 上記再現コードで使用しているUserエンティティは次のようなコードになっています。https://github.com/backpaper0/ormappers/blob/master/src/main/java/sample/doma/entity/User.java
>> またUserDaoは次のようになっています。https://github.com/backpaper0/ormappers/blob/master/src/main/java/sample/doma/dao/UserDao.java
>> 最初に示した再現コードの84行目、85行目でどちらも1となることを期待するのですが実際の値は0となっていました。
>> Domaのソースを見ましたが、BatchInsertCommandクラスのexecuteInternalメソッドでquery.isBatchSupported()がfalseを返すときの処理で戻り値として使用されているローカル変数updatedRowsに値が設定されていないことが原因だと思います。
>> http://www.seasar.org/source/browse/doma/trunk/doma/src/main/java/org/seasar/doma/internal/jdbc/command/BatchInsertCommand.java?revision=616&view=markup#l38
>> forループ内でコールされているexecuteUpdateの戻り値をupdatedRowsの各要素に代入するのが正しい動作だと思うのですが、そうであれば修正をお願い致します。
>> --
>> うらがみ
>> blog: http://d.hatena.ne.jp/backpaper0/
>> twitter: @backpaper0
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>
>
>
> --
> Toshihiro Nakamura
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user



-- 
うらがみ
blog: http://d.hatena.ne.jp/backpaper0/
twitter: @backpaper0


Seasar-user メーリングリストの案内