Mysql
 sql >> Database >  >> RDS >> Mysql

Ibernazione forza il timestamp per persistere/caricare come UTC

Solo per MySQL , un'alternativa all'implementazione di tipi di sospensione personalizzati consiste nell'aggiungere le seguenti opzioni JDBC all'URL di connessione JDBC:

useTimezone=true
serverTimezone=UTC

Ciò forzerà la tua connessione JDBC nel fuso orario UTC e chiederà a MySQL di eseguire conversioni dal fuso orario JVM. L'effetto netto è che puoi mantenere un fuso orario locale sulla tua JVM (ad es. per stampare messaggi di registro e così via), mentre le colonne DATETIME verranno mantenute come UTC.

Ad esempio:

<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>
            ...