I could easily reproduce the problem. After that I started poking around MySQL forums and found a solution - use "zeroDateTimeBehavior" URL parameter, e.g. "jdbc:mysql://localhost/cayenne? zeroDateTimeBehavior=convertToNull". Here is a few more relevant links:

http://forums.mysql.com/read.php?39,43138,43195
http://dev.mysql.com/doc/refman/5.0/en/connector-j-reference- configuration-properties.html

Andrus




On Dec 7, 2006, at 10:53 AM, Peter Schröder wrote:

here is the exception:

java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
        at com.mysql.jdbc.ResultSet.getNativeTimestamp(ResultSet.java:3848)
        at com.mysql.jdbc.ResultSet.getTimestampInternal(ResultSet.java:5488)
        at com.mysql.jdbc.ResultSet.getTimestamp(ResultSet.java:5146)
at org.objectstyle.cayenne.access.types.UtilDateType.materializeObject (UtilDateType.java:117) at org.objectstyle.cayenne.access.jdbc.JDBCResultIterator.readDataRow (JDBCResultIterator.java:327) at org.objectstyle.cayenne.access.jdbc.JDBCResultIterator.nextDataRow (JDBCResultIterator.java:181) at org.objectstyle.cayenne.access.jdbc.JDBCResultIterator.dataRows (JDBCResultIterator.java:151) at org.objectstyle.cayenne.access.jdbc.SelectAction.performAction (SelectAction.java:178) at org.objectstyle.cayenne.access.DataNodeQueryAction.runQuery (DataNodeQueryAction.java:95) at org.objectstyle.cayenne.access.DataNode.performQueries (DataNode.java:309) at org.objectstyle.cayenne.access.DataDomainQueryAction.runQuery (DataDomainQueryAction.java:355) at org.objectstyle.cayenne.access.DataDomainQueryAction.access$000 (DataDomainQueryAction.java:96) at org.objectstyle.cayenne.access.DataDomainQueryAction$1.transform (DataDomainQueryAction.java:327) at org.objectstyle.cayenne.access.DataDomain.runInTransaction (DataDomain.java:856) at org.objectstyle.cayenne.access.DataDomainQueryAction.runQueryInTransac tion(DataDomainQueryAction.java:324) at org.objectstyle.cayenne.access.DataDomainQueryAction.execute (DataDomainQueryAction.java:145) at org.objectstyle.cayenne.access.DataDomain.onQuery (DataDomain.java:766) at org.objectstyle.cayenne.util.ObjectContextQueryAction.runQuery (ObjectContextQueryAction.java:253) at org.objectstyle.cayenne.access.DataContextQueryAction.execute (DataContextQueryAction.java:90) at org.objectstyle.cayenne.access.DataContext.onQuery (DataContext.java:1422) at org.objectstyle.cayenne.access.DataContext.performQuery (DataContext.java:1411)

-----Ursprüngliche Nachricht-----
Von: Andrus Adamchik [mailto:[EMAIL PROTECTED]
Gesendet: Donnerstag, 7. Dezember 2006 09:50
An: [email protected]
Betreff: Re: mysql date


On Dec 5, 2006, at 12:36 PM, Peter Schröder wrote:

hi there,

first of all the bug-tracking link on page http://
incubator.apache.org/cayenne/how-can-i-help.html is broken :-( but
i found it through google.

Thanks for pointing it out. I fixed it on the site - it will be
published within an hour.

we have a lot of old data stored in our mysql-database. there are
lots of date-fields with date of '0000-00-00 00:00:00' (which
should in deed be 'null') which cause cayenne to fail on fetching
data-objects, cause it cant convert the date: Value '0000-00-00'
can not be represented as java.sql.Timestamp.
do i have to update all these fields to null, so that cayenne can
work properly?

What is the exception? I would assume this is thrown at the driver
level, not Cayenne, but if you can provide more details, maybe there
is a way for us to create a workaround.

Andrus




Reply via email to