我在 MACHINE_A 上的 tomcat 上启动了一个应用程序,时区为 GMT+3。
我使用在 MACHINE_B 上启动的远程 MySQL 服务器,时区为 UTC。
我们使用 spring-data-jpa 进行持久化。
作为问题的一个例子,我将展示存储库:
public interface MyRepository extends JpaRepository<MyInstance, Long> {
Optional<MyInstance> findByDate(LocalDate localDate);
}
如果我通过 localDate for 2018-09-06,我会得到日期所在的实体2018-09-05(前一天)
在日志中我看到:
2018-09-06 18:17:27.783 TRACE 13676 --- [nio-8080-exec-3] o.h.type.descriptor.sql.BasicBinder : binding parameter [1] as [DATE] - [2018-09-06]
我用谷歌搜索了很多这个问题,发现了几篇内容相同的文章(例如https://moelholm.com/2016/11/09/spring-boot-controlling-timezones-with-hibernate/)
所以,我有以下几点application.yml:
spring:
datasource:
url: jdbc:mysql://localhost:3306/MYDB?useUnicode=true&characterEncoding=utf8&useSSL=false&useLegacyDatetimeCode=false&serverTimezone=UTC
username: root
password: *****
jpa:
hibernate:
naming:
physical-strategy: org.hibernate.boot.model.naming.PhysicalNamingStrategyStandardImpl
properties:
hibernate:
show_sql: true
use_sql_comments: true
format_sql: true
type: trace
jdbc:
time_zone: UTC
但它没有帮助。
我们使用以下连接器:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
</dependency>
我该如何解决我的问题?
聚苯乙烯
我尝试使用相同的时区运行两个应用程序。在这种情况下,一切都按预期进行。
PS2
我尝试使用 MySQL 驱动程序 6.0.6 版本,但它没有改变任何东西。
Qyouu
慕田峪7331174
相关分类