[Seasar-user:20866] Re: 【DBFlute】OracleのTIMESTAMPでシステム日付が勝手にセットされてしまう

kubo [E-MAIL ADDRESS DELETED]
2011年 7月 23日 (土) 23:08:41 JST


久保(jflute)です。

豊里さん、ご確認ご報告ありがとうございます!
これからもよろしくお願いします。

2011/7/23 [E-MAIL ADDRESS DELETED] <[E-MAIL ADDRESS DELETED]>:
> 豊里です。
>
> 久保様
> ソース見て勉強になりました。
> DBFlute-0.9.8.8-RC3を早速ダウンロードしました。
>
> 問題なく動作しています。
> 対応ありがとうございました。
>
> 以上。
>
>
> 2011年7月22日20:11 kubo <[E-MAIL ADDRESS DELETED]>:
>> 久保(jflute)です。
>>
>> おおおぉ、フィードバックありがとうございます。
>> これはバグですね。
>>
>> 更新日時を利用した排他制御ではデフォルトは存在しない
>> というのがDBFluteの仕様ですが、デフォルトが存在して
>> しまっていますね。
>> (S2Daoの時のロジックをそのまま引き継いでしまいました)
>>
>> DBFlute-0.9.8.8-RC3 にて修正しました。
>> (モジュールとランタイム両方)
>>
>> ※モジュールはEMechaよりダウンロードできます。
>>
>> 2011/7/22 [E-MAIL ADDRESS DELETED] <[E-MAIL ADDRESS DELETED]>:
>>> 豊里です。
>>>
>>> 大中様
>>>> トリガーが効いてるとかいうことはないでしょうか?
>>> トリガーは作成していないので、その影響ではありませんでした。
>>>
>>> 久保様
>>>> o setTimeStamp() を呼び出さないで insert() するとどうなるか?
>>> システム日時が入りました。
>>>
>>>> o setTimeStamp() をオーバーライドしてログを出力してみて、
>>>>  予期しないセッターメソッドの呼び出しが他にないか?
>>> TnAbstractEntityHandler#updateTimestampIfNeedから値が入ってる動きが見られました。
>>> デバッグで動きを見ているとTnBeanMetaDataFactoryImpl#getTimestampPropertyNameでT_HOGEテーブルの場合、デフォルトの"timestamp"が設定されたので変更すると問題なく指定した日付がinsertされました。
>>>
>>>
>>> 以上。
>>>
>>>
>>> 2011年7月21日22:00 Hiroyuki Ohnaka <[E-MAIL ADDRESS DELETED]>:
>>>> 大中(せと)です。
>>>>
>>>> トリガーが効いてるとかいうことはないでしょうか?
>>>>
>>>> 2011年7月21日21:28 kubo <[E-MAIL ADDRESS DELETED]>:
>>>>> 久保(jflute)です。
>>>>>
>>>>> 豊里さん、こんばんは
>>>>>
>>>>> 特にその名前が特別なことはありません。
>>>>> DBFluteでは唯一 VERSION_NO という名前のカラムは
>>>>> 排他制御カラムとして自動判別しますが、それ以外はありません。
>>>>> 以下を確認してみてください。
>>>>>
>>>>> o setTimeStamp() を呼び出さないで insert() するとどうなるか?
>>>>> o setTimeStamp() をオーバーライドしてログを出力してみて、
>>>>>  予期しないセッターメソッドの呼び出しが他にないか?
>>>>>
>>>>> 2011/7/21 [E-MAIL ADDRESS DELETED] <[E-MAIL ADDRESS DELETED]>:
>>>>>> 豊里と申します。
>>>>>> 久保様、先程はご迷惑をおかけしてすみませんでした。
>>>>>>
>>>>>> 現在DBFlute-0.9.8.7を使用しています。
>>>>>> 件名の通りですが、TIME_STAMPという名前のカラム名でデータ型もTIMESTAMP型で
>>>>>> Insertする際にJava側で値をセットしても、システム日付が勝手にセットされてしまいます。
>>>>>>
>>>>>> 例)
>>>>>> ~DDL~
>>>>>> CREATE TABLE T_HOGE
>>>>>> (
>>>>>>   HOGE_ID                   VARCHAR2(10) NOT NULL,
>>>>>>   HOGE_NM                   VARCHAR2(100),
>>>>>>   TIME_STAMP                     TIMESTAMP(6),
>>>>>>   CONSTRAINT SYS_C005018 PRIMARY KEY (HOGE_ID)
>>>>>> );
>>>>>>
>>>>>>
>>>>>> ~Java~
>>>>>> MHoge entity = new MHoge();
>>>>>>
>>>>>> entity.setHogeId("test");
>>>>>> entity.setHogeNm("テスト");
>>>>>>
>>>>>> Timestamp ts = '未来日付';
>>>>>> entity.setTimeStamp(ts);
>>>>>>
>>>>>> tHogeBhv.insert(entity);
>>>>>>
>>>>>>
>>>>>> insert前にセットされたTimeStampの値を確認したら未来日付が入っていました。
>>>>>> しかしログ、データを確認するとシステム日付が自動設定されます。
>>>>>> もちろんcommonColumnMap.dfpropにはTIME_STAMPを設定していません。
>>>>>>
>>>>>> TIME_STAMPというカラム名は問題ですか?
>>>>>>
>>>>>> 以上。
>>>>>> _______________________________________________
>>>>>> 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 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 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 メーリングリストの案内