2010-01-15 72 views
5

我有一个DATE列的Mysql表,默认'0000-00-00'。如果我尝试调用,例如, em.find(MyTable.class,pk_value); 它恰好是数据库中的默认日期值'0000-00-00'的记录,则会引发异常( “java.sql.SQLException:Value ... can not被表示为java.sql.Date“。对于默认'0000-00-00 00:00:00'的DateTime列会发生同样的错误
有什么办法告诉EntityManager这样的值是否可以? 谢谢。Mysql日期/日期时间列和Java持久性

回答

7

什么帮助是设置JDBC驱动程序的zeroDateTimeBehavior属性convertToNull。

http://ondra.zizka.cz/stranky/programovani/java/index.texy (找人“的SQLException零DATETIME或TIMESTAMP列?使用zeroDateTimeBehavior“)。

jdbc:mysql://localhost/test?zeroDateTimeBehavior=convertToNull

0

如何改变ZERO日期为null。

+0

我确定它会起作用,但它可能会导致很多副作用,所以我宁愿不这样做,除非它是唯一的解决方案。 – a1ex07 2010-01-15 22:42:17

1

通过设置zeroDateTimeBehavior=convertToNull属性,我们可以避免这个问题。详情请查询this link