代码之家  ›  专栏  ›  技术社区  ›  Maurice

尝试持久化已用毫秒参数初始化的日期时获取mysqldatatruncation异常

  •  0
  • Maurice  · 技术社区  · 6 年前

    我正试图创建一个日期,是从现在几年后。我是这样做的:

    new Date(Math.abs(System.currentTimeMillis() - 94670778000L));
    

    但是由于某种原因,日期的年份部分变成了一个随机的未知数字,导致jvm抛出 MysqlDataTruncation 例外。这是完整的信息:

    com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '55106056-02-25 05:40:34.461' for column 'lastSeenOnline' at row 1
    

    根据Serhii在这里的帖子: Data truncation: Incorrect datetime value: '' 我应该把@temporal注释从 TemporalType.TIMESTAMP TemporalType.TIME . 这确实有帮助,但只是因为日期部分被省略了,所以这不是我要寻找的解决方案。

    有人能告诉我我做错了什么吗?我只是通过毫秒构造函数初始化一个新的日期,它应该可以工作,但由于某种原因它不能。

    0 回复  |  直到 6 年前
        1
  •  0
  •   Maurice    6 年前

    仍然不确定是什么导致了这个问题,但是从可嵌入类中删除导致问题的字段并将其放在使用可嵌入类的类中解决了这个问题。所以对于面临同样问题的人,不要在可嵌入类中使用@temporal。