2013-03-04 3 views
1

Я использую библиотеку Joda для объектов Date/Time и проект jadira userType для сохранения этих продуктов через Hibernate в моей базе данных MySQL.Jadira UserType library JavaTimeZoneWorkaroundHelper

При запуске приложения я получаю

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 

Так из текста У меня есть два варианта: - установить JDK 7, который я не хочу делать (я на Mac OS 10.6. 8, и я также не хочу использовать «слишком недавнюю» версию java) - Используйте часовой пояс без DST. Это означает, что я должен установить TimeZone по умолчанию для моего JVM в такое место, как Россия или где-то в Южной Америке.

  • Могу ли я просто отключить функцию JavaTimeZoneWorkaroundHelper от Jadira? Как ?

  • Я думаю о другом варианте: не используйте jadira для того, что он предлагает (преобразование объектов joda в строки и преобразование из строки в объекты joda), а сам конвертер.

Что вы предлагаете? Thanks

ответ

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")}) 
+0

Это не работает. Я установил параметр JVM с помощью -Duser.timezone = "GMT" вместо – facewindu

+0

GMT и UTC фактически те же самые, по крайней мере, достаточно близко для всех, кроме научного времени. См. Запись в Википедии: http://en.wikipedia.org/wiki/Coordinated_Universal_Time – RedYeti

0

Если добавить этот @TypeDef в файл package-info.java, и добавить @type (имя = «myDateTime») для атрибута, который должен иметь этот тип, он отлично работает.

0

С учетом этого вопроса были созданы новые версии библиотеки типов пользователей, которые удалили сообщение. Поэтому, если вы используете последнюю версию, например, 3.2.0.GA in maven central. Это устраняет проблему.

Смежные вопросы