Java Instant 无法通过 Spring JPA 保存在 Timestamp 类型的 mysql 列中

问题描述 投票:0回答:1

我试图将 java Instant 类型保存在 Timestamp 类型的 mysql 列中。但是我收到 MysqlDataTruncation 异常,如下所示。尽管该列允许 Null 值,但当我尝试为同一列传递 Null 值时。我仍然遇到同样的异常

Caused by: com.mysql.cj.jdbc.exceptions.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1732583454.419425000' for column 'created_at' at row 1
    at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:104)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeInternal(ClientPreparedStatement.java:953)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1098)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdateInternal(ClientPreparedStatement.java:1046)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeLargeUpdate(ClientPreparedStatement.java:1371)
    at com.mysql.cj.jdbc.ClientPreparedStatement.executeUpdate(ClientPreparedStatement.java:1031)
    at com.zaxxer.hikari.pool.ProxyPreparedStatement.executeUpdate(ProxyPreparedStatement.java:61)
    at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeUpdate(HikariProxyPreparedStatement.java)
    at org.hibernate.engine.jdbc.internal.ResultSetReturnImpl.executeUpdate(ResultSetReturnImpl.java:194)
    ... 151 common frames omitted

对此的任何帮助将不胜感激。预先感谢。

mysql spring-boot spring-data-jpa java-8 mysql-connector
1个回答
0
投票

根据日志输出中的值,

1732583454.419425000
,您拥有纳秒精度,MySql 可能无法存储。 您可以尝试使用
timestampInstant.truncateTo(ChronoUnit.MICROS)
将时间戳传递到持久层来截断时间戳吗?

© www.soinside.com 2019 - 2024. All rights reserved.