1

要約DST
エントリ の 1 日後に読み取り、非日付フィールドを変更すると、日付フィールドもマイナス 1 日に変更されます (2 月 22 日を読み取り、2 月 21 日として保持されます)。

バックグラウンド
postgres 9.2.7
jboss 4.2.3
centos
DST 最終日: 2015 年 2 月 22 日 (2 月 22 日 00:00 に 2 月 21 日 23:00 に戻る)

フー
+----------------------------------------------------+                 
| | ID | eventDate(日付)| 名前 |                           
+------------------------+------------|                           
| | 1 | 2015-02-22 | イオレク |                           
| | 2 | 2015-02-22 | ライラ |                           
| | 3 | 2015-02-22 | スタニス |                           
| | 4 | 2015-02-22 | アズリエル |                           
| | 5 | 2015-02-23 | 意志 |                           
+----------------------------------------------------+

eventDate のFoo.java (
Pojo) java.util.Date

問題のシナリオ

javaweb アプリケーションの使用: ID 1 の HQL を使用してFooオブジェクトをロードすると、たとえば、名前だけをIorekからCompassに変更して永続化すると、eventDateも-1 日に変更されます。新しいテーブルは次のようになります。

変更後のフー
+----------------------------------------------------+                 
| | ID | eventDate(日付)| 名前 |                           
+------------------------+------------|                           
| | 1 | 2015-02-21 | コンパス | コンパス                           
| | 2 | 2015-02-22 | ライラ |                           
| | 3 | 2015-02-22 | スタニス |                           
| | 4 | 2015-02-22 | アズリエル |                           
| | 5 | 2015-02-22 | 意志 |                           
+----------------------------------------------------+

たとえば、id 5 エントリの名前を変更しても、eventDate には何も起こりません。これは、2015 年 2 月 22 日のエントリでのみ発生します (DST から通常への移行)。

再現の試み

このシナリオは本番環境でのみ発生し、開発では確認されていません。

開発Javaを本番データベースに向ける(読み取り専用アクセス)タイムスタンプが正しく読み取られ、日付が2015-02-22として読み取られることを確認できました(22日目に変更されたエントリの書き込みをテストできません)

4

0 に答える 0