2010-01-15 25 views
5

Tengo una tabla Mysql con columna DATE, por defecto '0000-00-00'. Si intento llamar, por ejemplo, al em.find(MyTable.class,pk_value); y resulta ser un registro en la base de datos con el valor de fecha predeterminado '0000-00-00', se lanza una excepción ( "java.sql.SQLException: Value ... can not ser representado como java.sql.Date ". El mismo error ocurre para las columnas de DateTime con '0000-00-00 00:00:00' predeterminado.
¿Hay alguna manera de decirle a EntityManager que tales valores están bien? Gracias.Columnas de Fecha/Fecha de Mysql y persistencia de Java

Respuesta

7

Lo que ayuda es establecer zeroDateTimeBehavior la propiedad del controlador JDBC a convertToNull.

Ver http://ondra.zizka.cz/stranky/programovani/java/index.texy (busque "excepción de SQL para el cero DATETIME o TIMESTAMP? uso zeroDateTimeBehavior ").

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

0

¿Qué hay de cambiar las fechas de ZERO para borrar.

+0

Estoy seguro de que funcionará, pero puede causar muchos efectos secundarios, por lo que preferiría no hacerlo a menos que sea la única solución. – a1ex07

1

Al establecer la propiedad zeroDateTimeBehavior=convertToNull podemos evitar este problema. Para más detalles, consulte this link.