使用hibernate+mysql5.0做了个练习,其中有个字段需要保存时和分,所以,数据库中用了TIMESTAMP类型,hibernate配置文件中为默认的date类型。结果保存时报以下错误:>>com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '1970-01-01' for column 'startDate' at row 1
>> at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
>> at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
>> at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1160)
>> at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:685)
>> at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1400)
>>...已知:
1、编码绝对没有问题,数据库和程序连接中都是utf8.
2、插入的数据绝对不过长,只是在程序中 new了个date插入了进入。
求高手的完美解决方案。

解决方案 »

  1. 是否是你的日期格式的问题。show create table xxxx 贴出来看一下。
      

  2. CREATE TABLE `task` (
      `id` int(11) NOT NULL auto_increment COMMENT '缂栧彿',
        `startDate` timestamp NULL default NULL COMMENT '寮€鏈烘椂闂?,
        PRIMARY KEY  (`id`,`castingType`)
    ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COMMENT='packagename=task'
      

  3. hibernate配置文件中为默认的date类型
    date类型太短,只能描述年月日。
    还是使用timestamp类型吧。hibernate支持的。
      

类似问题 »