Skip to content

MySQL-Datum ändert sich nach JPA-Speichern auf das gestrige Datum

Lösung:

Ich denke, es liegt am Zeitzonenproblem. Locale Date berücksichtigt die Zeitzone nicht, wie Sie bereits wissen. Aber in der Datenbank vermute ich, dass das Datum mit der Zeitzone verknüpft ist. Die JPA/Hibernate-Schicht konvertiert das LocaleDate in TimeStamp (standardmäßig wird während der Konvertierung die JVM-Zeitzone verwendet). Die Zeitzone, in der Sie die Anwendung ausführen, unterscheidet sich von der Zeitzone der Datenbank, daher gibt es keine Übereinstimmung.

Um dies zu bestätigen, stellen Sie die Zeitzone des laufenden Geräts auf UTC.

Danke für Ihre Hilfe. Wie oben erwähnt und beantwortet, war es a Zeitzonenproblem.

Lösung:

  1. In MySQL einstellen SET GLOBAL time_zone="+02:00";";
  2. Entfernen ?serverTimezone=UTC von spring.datasource.url=jdbc:mysql://localhost:3306/schema_name

Fand diese MySQL-Befehle nützlich:
SELECT @@GLOBAL.time_zone, @@session.time_zone, @@system_time_zone; und
SELECT TIMEDIFF(NOW(), UTC_TIMESTAMP) as GMT_TIME_DIFF;

Zusätzliche Informationen Sollte die Zeitzone von MySQL auf UTC eingestellt sein? und in der MySQL-Dokumentation.

Problemumgehung

Wie oben beantwortet, Ändern des Spring Boot-Standards mysql-connector-java in pom.xml:

<dependency>
 <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.47</>
</dependency>

Und der Fahrer zu spring.datasource.driverClassName=com.mysql.jdbc.Driver in Eigenschaften Datei auch das richtige Datum zurück.

Wenn Ihre Zeitzone zum Beispiel ist

Europe/Warsaw

du kannst einstellen:

spring.datasource.url=jdbc:mysql://localhost:3306/database?serverTimezone=Europe/Warsaw

an Stelle von:

spring.datasource.url=jdbc:mysql://localhost:3306/database?serverTimezone=UTC

Sie können aber auch einen weiteren Eintrag in application.properties hinzufügen:

spring.jpa.properties.hibernate.jdbc.time_zone=Europe/Warsaw
Click to rate this post!
[Total: 0 Average: 0]



Anderer Beitrag

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.