Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hibernate erzwingt, dass der Zeitstempel als UTC gespeichert/geladen wird

Nur für MySQL , besteht eine Alternative zur Implementierung benutzerdefinierter Hibernate-Typen darin, die folgenden JDBC-Optionen zu Ihrer JDBC-Verbindungs-URL hinzuzufügen:

useTimezone=true
serverTimezone=UTC

Dadurch wird Ihre JDBC-Verbindung in die UTC-Zeitzone gezwungen und MySQL aufgefordert, Konvertierungen von der JVM-Zeitzone durchzuführen. Der Nettoeffekt besteht darin, dass Sie eine lokale Zeitzone auf Ihrer JVM beibehalten können (z. B. zum Ausdrucken von Protokollmeldungen usw.), während DATETIME-Spalten als UTC beibehalten werden.

Zum Beispiel:

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