今天在把项目部署到服务器上运行测试的时候出现了一个问题,当业务跑到对时间java.util.Date进行入库的时候结果出现
0000-00-00 00:00:00
Hibernate的配置信息如下:
<property name="createTime" type="java.util.Date"></property>
Java使用的是java.util.Date对象,数据库字段类型为 DATETIME,貌似配置都没问题。之后又修改了其他的几种类型,Java端的换了java.sql.Date,java.sql.Timestamp。响应的配置文件也换过date,timestamp,数据库也修改过timestamp。结果是:java.sql.Date出现年月日,时分秒的都为0,timestamp的话还是显示:
0000-00-00 00:00:00
而在本机上面跑的时候完全没出现这个问题,一切正常,搞了一个多钟,始终不得要领。到后来突然灵机一动,会不会是java.util.Date时间格式化的问题。然后把java.util.Date格式化成
yyyy-MM-dd hh:mm:ss
果然时间显示成功。
之后查了下资料,当时间插入失败,会直接给个默认的时间,就是0000-00-00 00:00:00,当然你也可以自己设置默认时间,我就没设置 :-(。插入失败的原因是时间格式和数据库的不一致导致的,我开始的时候是直接new Date,在设置上当前的时间戳,没有进行格式化,所以会多一位出来
yyyy-MM-dd hh:mm:sss