2016-08-31 3 views
1

私たちは、postgresql 9.4から情報を取り出すために、hibernate 4.3.0.Finalを使用しています。 pgadminを使ってデータベースにクエリを実行すると、テーブルのエントリは安定していますが、同じクエリを休止状態から実行すると、タイムスタンプは3時間前後になります。私たちのデータベースは、タイムゾーンなしのタイムスタンプを保持しており、私たちは+ 3タイムゾーンに位置しています。ネイティブクエリーを使用しても、なぜハイバネーションがタイムスタンプを変更するのか理解できません。Hibernateは異なるタイムスタンプを返す

注:私たちは、Debianのジェシー8とTomcat 8

表を使用している:

uid serial NOT NULL 
time timestamp without time zone NOT NULL 
type smallint NOT NULL 

ポンポンconfに:

 <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-core</artifactId> 
      <version>4.3.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>org.hibernate</groupId> 
      <artifactId>hibernate-entitymanager</artifactId> 
      <version>4.3.0.Final</version> 
     </dependency> 
     <dependency> 
      <groupId>postgresql</groupId> 
      <artifactId>postgresql</artifactId> 
      <version>9.1-901.jdbc4</version> 
     </dependency> 
+0

アプリケーションとdbは同じサーバーにありますか異なるのですか? –

答えて

2

Hibernateは日付表現に "JVMタイムゾーン"を使います。明示的に設定されていない場合、JVMはオペレーティングシステムで設定されたタイムゾーンを使用します。 起動時に使用するタイムゾーンを、パラメータ

-Duser.timezone=UTCでJVMに伝えることができます。

+0

それは完璧、ありがとう –

+0

あなたを歓迎します:-) –

2

あなたのJVMがタイムゾーン3を持っている、

にしてみてください
TimeZone.setDefault(TimeZone.getTimeZone("UTC")) 

しかし、それは素早くack、あなたはあなたのDAO層でタイムゾーンをカバーすることができます

+0

それは動作しますが、私のプロジェクトには非常に多くのDAOクラスがあります:)私はJürdenのソリューションを使用しようとしています。ありがとう –

関連する問題