- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Hibernate (5.4.6.Final
) 中将 MySQL 数据库的 TIME
列映射为 java.time.LocalTime
类。这是映射到实体的声明:
@Column(name = "TIMEVAL")
public LocalTime TIMEVAL;
数据库中的列的值为 00:30:00
,但是 Hibernate 正在构建值为 01:30:00 的
。TIMEVAL
实例
我考虑了服务器和 hibernate 连接之间的时区差异(忽略 TIME 数据类型没有时区的事实),但我将每个连接和服务器设置为 UTC。
并通过执行查询:
SELECT @@global.time_zone;
SELECT @@session.time_zone;
Hibernate session 和服务器的结果都是+00:00
。
按照 Hibernate 配置:
spring.jpa.properties.hibernate.jdbc.time_zone=UTC
spring.datasource.url=jdbc:mysql://localhost:3306/..?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&allowMultiQueries=true
这是 MySQL 配置:
default-time-zone=+00:00
我也尝试过:
VARCHAR(8)
,但 Hibernate 始终检索 01:30:00
; Duration
,但 Hibernate 抛出错误,指出它无法将 TIME 映射到 java.lang.Long。为了让 Hibernate 使用数据库列的值构建 LocalTime
实例,我需要修改什么?
最佳答案
正如@Andreas 在评论中指出的那样。 JVM 时区不是 UTC。
我需要更改 JVM 时区才能从数据库中获取正确的值。
因此,通过将以下参数添加到 JVM 选项:
-Duser.timezone=UTC
最后,使用 00:30:00
的值作为数据库列的值构建 LocalTime
实例。
关于java - MySQL/Hibernate 使用映射为 LocalTime 的列检索错误数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58787490/
我在寻找一种优雅的方法来从另一个 LocalTime 中减去一个 LocalTime 时遇到问题,但不是减去一定的秒数或分钟数,而是这样: 本地时差 = 现在 - 之前; 显然这是行不通的,所以实际上
我最近使用 LocalDate.atStartOfDay() 回答了一些问题和 LocalDate.atTime(LocalTime.MIN) . 我想知道为什么没有 LocalDate.atEndO
我正在尝试检查当前时间是否在开始LocalTime 之后和另一个结束LocalTime 之前,即开始时间加 11 小时。如果开始时间是 11:00(结束时间将是 22:00),这会很好地工作。但是,当
为什么当我尝试显示 2 个不同参数的日期时,我将其放入 localtime() 函数,控制台显示 2 个相同的日期? 这是我的代码: #include #include #include int ma
我认为我做的一切都是正确的,但为什么我会得到这个: > Sys.time() [1] "2015-11-09 18:51:17 UTC" Warning messages: 1: In as.POSI
我试图编码一个包含LocalTime joda类型时间的对象。如果您尝试返回晚于12am的时间,则会出现问题,因此在下面的示例中,如果类(class)的开始时间是14:00(2pm),则时间将转换为0
我的代码仅支持 Android 中的 API 级别 >= 26: public static String in = "7:00:00"; public static String in_until
我认为我做的一切都是正确的,但为什么我会得到这个: > Sys.time() [1] "2015-11-09 18:51:17 UTC" Warning messages: 1: In as.POSI
为什么当我尝试显示 2 个具有不同参数的日期时,我将其放入 localtime() 函数,控制台显示 2 个相等的日期? 这是我的代码: #include #include #include int
在我的服务器上运行 date 会得到正确的时间。但是在 C(++) 中使用 localtime() 我得到了错误的时间。 运行日期:Fr 30. Nov 12:15:36 CET 2012 使用 lo
所以,我写了下一个函数: void actualizetime(){ puts("actualizetime called"); //debugging purposes. time_t ra
网上有大量代码让我相信下面的代码会给我当前时间。然而,事实并非如此。我得到了我认为是 UNIX 时代的时间; 1970 年 1 月 1 日 00:00;00。 现在真的很烦人,为什么我不能获得计算机系
我有这段代码可以从“29-02-2016”之类的日期返回星期几,但有时它会给我本地时间 (&t) 中的段错误。 int obterDiaSemana(char *str) { struct tm t
我有一段代码工作得很好,但现在不知何故不起作用。 我正在读取一个 csv 文件,但在读取格式为 4:38 的时间字段时出现错误。 我抛出异常的代码是: LocalTime.parse("4:38",
出于学习目的,我正在用 C++ 编写一个简单的日志记录类。我的代码包含一个返回今天日期字符串的函数。但是,每当调用“localtime”时,我都会收到编译器错误。 std::string get_da
我有一个使用 localtime() 的设置来获取一个带有本地时间的 tm。这一切都很好。 但是,如果我在应用程序运行时更改时区,它不会注意到我更改了时区。 有没有办法告诉它“再看一遍”以刷新到系统时
我正在尝试了解如何构建自定义 DateTimeFormatter为我的申请。我基本上需要处理这样写的时间 "HHMMSS.FFFFFF"。 我使用以下方法获得了 99% 的结果: import sta
我有两个 LocalTime 对象: LocalTime time1 = LocalTime.of(8, 0, 0); LocalTime time2 = LocalTime.of(15, 0, 0)
我想将我的字符串转换为 LocalTime 格式 String s = "1時30分:00"; String ss = s.replace("時", ":").replace("分",
我有一个航类行程计划,我需要在其中获取出发时间和到达时间之间的差异。我从数据中获取这些指定时间作为字符串。这是我的问题: import static java.time.temporal.Chrono
我是一名优秀的程序员,十分优秀!