尝试保留已使用毫秒参数初始化的日期时,获取MysqlDataTruncation异常

时间:2019-02-15 14:40:43

标签: java mysql spring hibernate

我正在尝试创建一个距当前时间几年的日期。我这样做是这样的:

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。这确实有帮助,但这只是因为日期部分随后被省略了,所以这不是我想要的解决方案。

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

1 个答案:

答案 0 :(得分:0)

仍不确定是什么原因引起的,但是从可嵌入类中删除了引起问题的字段,并将其放在使用可嵌入类的类中解决了该问题。因此,对于面临相同问题的任何人,请勿在可嵌入的类中使用@Temporal。