Re: SQLTemplate generates Date instead of Timestamp?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Wed Oct 13 2004 - 00:00:36 EDT

  • Next message: Andrus Adamchik: "Re: NullPointerException in call to DataContext.createDataContext()"

    Hi Twan,

    You can control the exact Class of each column returned by SQLTemplate
    by using a "#result(..)" directive -
    http://objectstyle.org/cayenne/userguide/fetch/sqltemplate-
    scripting.html . I can't comment further what's going on in you case,
    as you do not show the script you use for SQLTemplate, but something
    like #result('DATE' 'java.sql.Timetsamp') for a given column should
    produce the correct value.

    Andrus

    On Oct 12, 2004, at 5:27 AM, Twan Kogels wrote:

    > Hello all,
    >
    > I've got a problem with SQLTemplate in relation to java.util.Date /
    > java.sql.Timestamp
    >
    > I've got a SQLTemplate which executes a custom query. The custom query
    > results in a List of objects (Document). The Document object has a
    > field named "Date" which is of type TIMESTAMP (mysql), java type is
    > java.sql.Timestamp. The modeler generates the following code:
    >
    > ========
    > public java.sql.Timestamp getDate() {
    > return (java.sql.Timestamp)readProperty("date");
    > }
    > ========
    >
    > When i do the SQLTemplate query and call the getDate() function a
    > ClassCastException is raised. Java can't cast a java.util.Date to
    > java.sql.Timestamp. That's really strange. "Date" is not null and
    > contains a normal valid value.
    >
    > It gets even more strange. When i do a standard SelectQuery and call
    > the getDate() function everything works normal.
    >
    > I've added a couple of code lines to getDate() to see what's going
    > wrong:
    >
    > ========
    > public java.sql.Timestamp getDate() {
    > Object o=readProperty("date");
    > System.out.println(o.getClass()+" - "+o.toString());
    > java.util.Date d=(java.util.Date)o;
    > java.sql.Timestamp ts=(java.sql.Timestamp)o; //<--
    > classcastexception
    > return (java.sql.Timestamp)readProperty("date");
    > }
    > ========
    >
    > When using SQLTemplate this prints:
    > ========
    > class java.util.Date - Tue Oct 12 11:04:57 CEST 2004
    > ========
    >
    > When using SelectQuery this prints:
    > ========
    > class java.sql.Timestamp - 2004-10-12 11:04:57.0
    > ========
    >
    > As you can see for some reason SQLTemplate generates a java.util.Date
    > and SelectQuery generates a java.sql.Timestamp.
    >
    > How can i "tell" SQLTemplate to generate a java.sql.Timestamp instead
    > of a "java.util.Date" (which isn't anywhere in my datamap.xml)?
    >
    > Thanks,
    > Twan Kogels



    This archive was generated by hypermail 2.0.0 : Wed Oct 13 2004 - 00:00:39 EDT