使用Hibernate连接mysql5.1的数据库,表中有一个timestamp类型的字段,报出以下错误:

java.sql.SQLException: Cannot convert value '0000-00-00 00:00:00' from column 3 to TIMESTAMP

使用的是5.1JDBC驱动,参考了官方文档,说'0000-00-00 00:00:00'java中无法可靠的表示,Connector/J 3.1中就会抛出这个异常,看来5.1的版本中也没有解决这个问题,杯具。

查了一下表,该字段的默认值确实定义为'0000-00-00 00:00:00',在select这个字段的时候就会报错,没办法,只有去掉了默认值,把该时间字段为空,这样java就不会抛异常了。

如果时间字段因特殊需要必须为0时,可以使用另一个解决方法,修改JDBC连接参数:

jdbc:mysql://ip:port/dbname?zeroDateTimeBehavior=convertToNull

0转换为null