Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Hibernar forçar carimbo de data/hora para persistir/carregar como UTC


Somente para MySQL , uma alternativa para implementar tipos personalizados do Hibernate é adicionar as seguintes opções de JDBC ao seu URL de conexão JDBC:
useTimezone=true
serverTimezone=UTC

Isso forçará sua conexão JDBC no fuso horário UTC e solicitará ao MySQL para realizar conversões do fuso horário da JVM. O efeito líquido é que você pode manter um fuso horário local em sua JVM (por exemplo, para imprimir mensagens de log e assim por diante), enquanto as colunas DATETIME serão mantidas como UTC.

Por exemplo:
<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&amp;serverTimezone=UTC</prop>
            ...