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

kubo [E-MAIL ADDRESS DELETED]
2011年 7月 22日 (金) 20:11:47 JST


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