[Seasar-user:18367] Re: [DBFlute] update での EntityAlreadyUpdatedException

HATTI [E-MAIL ADDRESS DELETED]
2009年 8月 23日 (日) 13:27:54 JST


お世話になっております。
hatti です。

SQLログを比較してみたところ、
原因と思われる箇所がわかりました。

なぜか bean.getIntUserId() の部分で、
「-1」が返されて存在しないデータを更新しようとしているようでした。
getIntUserId() は userId を String -> Integer 変換しているメソッドなのですが、
なぜか userId が null になってしまいNumberFormatException となってしまっているようです。
(※Exceptionの際は -1 を返すようにしています。)

普通に、bean.userId と参照するとString で正常な値を取得できるのですが、
デバッグを getIntUserId 内で止めると、bean のインスタンス変数が全て null になってしまっていました。
bean は spring 管理下(CGLIB 使用)のオブジェクトなのですが、
そこらへんが影響してるのかもしれません。

引き続き調査してみます。
大変お手数おかけいたしました。

以上、よろしくお願いいたします。

2009/08/23 10:20 に kubo<[E-MAIL ADDRESS DELETED]> さんは書きました:
> 久保(jflute)です。
>
> hattiさん、こんにちは
>
> まずは、その二つのパターンのときのSQLのログを
> 比較してみて下さい。
>
> 2009/8/23 HATTI <[E-MAIL ADDRESS DELETED]>:
>> お世話になっております。
>> hatti です。
>>
>> DBFlute9.5.3 (生成は 9.5.4-S) / OracleXE(10g) を使用しております。
>> 特に急ぎの質問ではないため、時間のあるときに回答いただけるとありがたいです。
>>
>> あるテーブルを更新する際に、
>> EntityAlreadyUpdatedException が発生してしまいます。
>> 以下がそのコードです。
>>
>> **************************************************
>>        public MstUser processUpdate(final UserBean bean) {
>>                MstUser userEntity = new MstUser();
>> //              Beans.copy(bean, userEntity).execute();
>> *               userEntity.setUserId(bean.getIntUserId());
>> *               userEntity.setVerNo(bean.verNo);
>>                mstUserBhv.update(userEntity);
>>                return userEntity;
>>        }
>> ***************************************************
>> これはService クラスのメソッドです。
>> Action -> Service -> Bhv という形の作りです。
>>
>> userEntity の setter を呼んで、userId/verNo をセットし、 update を呼ぶと例外になってしまいます。
>> ただ、 setter (*) をコメント化し、 Beans.copy (//)を呼べば正常に更新ができます。
>>
>> Beans.copy は seasar の util です。
>> (DIコンテナ自体は spring を使っていますが、、)
>>
>> なにか原因がお分かりになればご教示いただけると助かります。
>> 以上、よろしくお願いいたします。
>> _______________________________________________
>> Seasar-user mailing list
>> [E-MAIL ADDRESS DELETED]
>> https://ml.seasar.org/mailman/listinfo/seasar-user
>>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
>


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