1

日付/時刻オブジェクトに Joda ライブラリを使用し、jadira userType プロジェクトを使用して、MySQL データベースで Hibernate を介してこれらのものを保持しています。

アプリを実行すると、

4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit>
ATTENTION: Under JDK 6 it may not be possible to handle DST transitions correctly
4 mars 2013 18:48:18 org.jadira.usertype.spi.reflectionutils.JavaTimeZoneWorkaroundHelper <clinit>
GRAVE: Running under a Zone that uses daylight saving time. To avoid incorrect datetimes being stored during DST transition, either update to JDK 7 or use a Timezone for the JDK without Daylight Saving Time

したがって、テキストから2つのオプションがあります: - やりたくないJDK 7をインストールします(私はMac OS 10.6.8を使用しており、「最近の」Javaバージョンも使用したくありません) - DST なしのタイムゾーンを使用します。これは、JVM のデフォルトの TimeZone をロシアまたは南アメリカのどこかに設定する必要があることを意味します。

  • JavaTimeZoneWorkaroundHelperJadira から機能を無効にすることはできますか? どのように ?

  • 私は別のオプションを考えています.jadiraが提供するもの(jodaオブジェクトから文字列への変換、および文字列からjodaオブジェクトへの変換)にはjadiraを使用せず、コンバーターを自分で実行します。

何を指示してるんですか ?ありがとう

4

3 に答える 3

0

アプリが実行されているマシンとは関係なく、マッピングに使用される Java およびデータベースのタイム ゾーンを明示的に設定できます。一般に、日付と時刻を UTC タイム ゾーンでデータベースに格納することをお勧めします。これで問題が解決するかどうか試してください。

 @TypeDef(name = "myDateTime", 
          typeClass = org.jadira.usertype.dateandtime.joda.PersistentDateTime.class,
      parameters = {@Parameter(value="UTC", name="databaseZone"), 
                    @Parameter(value="UTC", name="javaZone")})
于 2013-03-04T18:38:51.457 に答える
0

この @TypeDef を package-info.java ファイルに追加し、このタイプを持つべき属性に @Type(name = "myDateTime") を追加すると、完全に機能します。

于 2013-06-20T09:12:26.757 に答える
0

この質問が作成されてから、メッセージを削除した新しいバージョンのユーザー タイプ ライブラリが作成されました。したがって、maven central で 3.2.0.GA のような最近のバージョンを使用する場合。問題を修正します。

于 2015-05-13T08:41:45.410 に答える