Pour MySQL uniquement , une alternative à l'implémentation de types Hibernate personnalisés consiste à ajouter les options JDBC suivantes à votre URL de connexion JDBC :
useTimezone=true
serverTimezone=UTC
Cela forcera votre connexion JDBC dans le fuseau horaire UTC et demandera à MySQL d'effectuer des conversions à partir du fuseau horaire JVM. L'effet net est que vous pouvez conserver un fuseau horaire local sur votre JVM (par exemple, pour imprimer les messages de journal, etc.), tandis que les colonnes DATETIME seront conservées en UTC.
Par exemple :
<bean id="hibernateAnalysisSessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
<property name="hibernateProperties">
<props>
<!-- Connection parameters -->
<prop key="hibernate.connection.driver_class">com.mysql.jdbc.Driver</prop>
<prop key="hibernate.connection.url">jdbc:mysql://hostname/databaseName?useTimezone=true&serverTimezone=UTC</prop>
...