Шукати в цьому блозі

середа, 12 червня 2013 р.

(java.sql.SQLException) Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp

Долго бился головой об стену, уже даже начал придумывать всяческие хитрые mysql-ные view-вы чтобы обмануть Java в проекте JDeveloper-а... Суть проблемы заключалась в том, что исторически сложилось так, что несущественные значения timestamp в mysql-базе заполнялись значениями '0000-00-00 00:00:00', а в Java они не преобразовывались нормально в значение timestamp и выбивали исключение.
Решение было найдено следующее. Во-первых, connection был преобразован в jdbc url, а во-вторых к нему был добавлен параметр zeroDateTimeBehavior установленный в значение convertToNull. О всех возможных значениях можно почитать на соответствующей странице руководства MySQL: Driver/Datasource Class Names, URL Syntax and Configuration Properties for Connector/J, а об использовании ADF Business Components совместно с MySQL тут "How To Use ADF Business Components with MySQL".
В итоге jdbc url стал выглядеть примерно так:
jdbc:mysql://hostname/database?ultraDevHack=true&capitalizeTypeNames=true&pedantic=true&zeroDateTimeBehavior=convertToNull&sqlmode=oracle


Немає коментарів: