2017-01-22 8 views
1

日付:Javaのエンティティは、私は次のように一時的なフィールドを定義するために使用私のエンティティクラスでfiledsとOracle TIMESTAMPデータ型

@Temporal(TemporalType.TIMESTAMP) 
    @Column(name = "START_DATE") 
    private Date start; 

私のオラクルでは、これらのフィールドによってマッピングされたカラムDBタイプTIMESTAMPです。

この設定の意味は次のとおりです。
私の日付は暗黙のうちにUTCの日付ですか?
私は自分で処理することに注意しなければならないということは、夏時間の問題ですか?

答えて

1

JPA TemporalType.TIMESTAMPは、JDBC java.sql.Timestampタイプに対応し、これはOracle(およびSQL標準)TIMESTAMP [ WITHOUT TIME ZONE ]タイプに対応します。 JDBC 4.2(Java 8)はOffsetDateTimeのサポートも追加しましたが、Java EE 7のTemporalTypeはまだありません。

これは、値にタイムゾーンが設定されていないことを意味します。タイムスタンプのセマンティクスは、設定されている「ローカルタイムゾーン」のセマンティクスです。もちろん、潜在的に異なるサーバー(データベース)とクライアント(Javaアプリケーションを実行しているマシン) "ローカルタイムゾーン"に注意する必要があります。

あなたクライアントサーバーのタイムゾーンがUTCに設定されていることを確実である場合は、必要な動作を実現することができます。

+0

ありがとうございました!あなたが言ったことをもう少し詳細に説明できますか?セマンティクスは "ローカルタイムゾーン"の意味です " – GionJh

+0

クライアントとサーバーとは、アプリケーションサーバーとRDBMSを意味しますか? – GionJh

+0

@GionJh:これをより明確にするために編集しました。私は強く*これについてのドキュメントを読むことをお勧めします。 –

関連する問題