Solo para MySQL , una alternativa a la implementación de tipos personalizados de Hibernate es agregar las siguientes opciones de JDBC a su URL de conexión de JDBC:
useTimezone=true
serverTimezone=UTC
Esto forzará su conexión JDBC a la zona horaria UTC y le pedirá a MySQL que realice conversiones desde la zona horaria JVM. El efecto neto es que puede mantener una zona horaria local en su JVM (por ejemplo, para imprimir mensajes de registro, etc.), mientras que las columnas DATETIME permanecerán como UTC.
Por ejemplo:
<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>
...