使用CrudRepository将ZonedDateTime转换为MySQL时间戳

戴维

我有以下代码(为简洁/简洁起见,已简化):

@Entity
@Table(name="mytable", schema="schemaName")
public class MobileDeviceData {
    @Id
    @Column(name="id")
    private String id;

    @Column(name="activitydetecteddate")
    private ZonedDateTime activityDetectedDate;
}

和由Springboot实现的CrudRepository接口:

@Transactional
    public interface MobileDeviceDataDao extends CrudRepository<MobileDeviceData, String> {
}

在表格中的timestamp列字段中包含activitydetecteddate的日期。

当我尝试通过调用将其保存到数据库时

mobileDeviceDataDao.save(mobileDeviceDataList);

我收到以下错误:

2015-11-06 11:57:53.095  WARN 3198 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Error: 1292, SQLState: 22001
2015-11-06 11:57:53.095 ERROR 3198 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : Data truncation: Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x15\x06\x00\x00\x07\xDF\x0B\x06\x10 \x05;?<\x80\x0' for column 'activityDetectedDate' at row 1
2015-11-06 11:57:53.096  INFO 3198 --- [nio-8080-exec-1] o.h.e.j.b.internal.AbstractBatchImpl     : HHH000010: On release of batch it still contained JDBC statements
2015-11-06 11:57:53.097  WARN 3198 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : SQL Warning Code: 1292, SQLState: 22007
2015-11-06 11:57:53.097  WARN 3198 --- [nio-8080-exec-1] o.h.engine.jdbc.spi.SqlExceptionHelper   : Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x15\x06\x00\x00\x07\xDF\x0B\x06\x10 \x05;?<\x80\x0' for column 'activityDetectedDate' at row 1
2015-11-06 11:57:53.108 ERROR 3198 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; nested exception is org.hibernate.exception.DataException: could not execute statement] with root cause

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x15\x06\x00\x00\x07\xDF\x0B\x06\x10 \x05;?<\x80\x0' for column 'activityDetectedDate' at row 1
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3868)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3806)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2470)

有人可以告诉我我做错了什么,如何将代码正确地从ZonedDateTime转换为Timestamp。

戴维

我能够找到不需要代码中特定于Hibernate注释的此问题的解决方案。我可以通过将这三个jar添加到类路径中来实现这一点(我正在使用Gradle):

compile 'org.hibernate:hibernate-core:5.0.3.Final'
compile 'org.hibernate:hibernate-entitymanager:5.0.3.Final'
compile 'org.hibernate:hibernate-java8:5.0.3.Final'

然后,Hibernate能够正确处理新的Java8类型。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将日期时间字段时间戳从mysql转换为php

来自分类Dev

使用MySQL中的Alter表将日期转换为日期时间或时间戳

来自分类Dev

PHP-将mysql时间戳转换为显示网格

来自分类Dev

将日期格式转换为mysql时间戳

来自分类Dev

如何将MySQL时间戳转换为Javascript日期?

来自分类Dev

将日期格式转换为mysql时间戳

来自分类Dev

使用MySQL中的行聚合和操作将BigInt时间戳转换为真实日期

来自分类Dev

将时间转换为Unix时间戳

来自分类Dev

将时间戳转换为日期时间

来自分类Dev

使用PHP将时间戳转换为小时

来自分类Dev

将NSDate转换为Unix时间戳以在字典中使用

来自分类Dev

使用Angular 2管道将时间戳转换为日期

来自分类Dev

使用Python将DateTime时间戳转换为Unix

来自分类Dev

如何使用Talend将毫秒转换为时间戳

来自分类Dev

使用PHP将时间戳转换为小时

来自分类Dev

使用Python将DateTime时间戳转换为Unix

来自分类Dev

如何使用PowerShell将人类可读的时间戳转换为Unix时间戳?

来自分类Dev

如何使用PowerShell将人类可读的时间戳转换为Unix时间戳?

来自分类Dev

如何使用Shell将ISO 8601时间戳转换为Unix时间戳?

来自分类Dev

使用 mutate_if 将时间戳转换为时间戳

来自分类Dev

将毫秒时间戳转换为以前的时间戳

来自分类Dev

将时间戳转换为带时区的时间戳

来自分类Dev

将日期转换为整数(时间戳)

来自分类Dev

将时间戳转换为日期Excel

来自分类Dev

仅将时间戳转换为日期

来自分类Dev

将OffsetDateTime转换为UTC时间戳

来自分类Dev

将gmail时间戳转换为strptime

来自分类Dev

将时间戳转换为整数

来自分类Dev

将日期转换为时间戳

Related 相关文章

热门标签

归档