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

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2011年 7月 23日 (土) 22:58:36 JST


豊里です。

久保様
ソース見て勉強になりました。
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 メーリングリストの案内