Re: Dates inserted into Oracle do not have Minutes / Seconds?

From: Andrus Adamchik (andru..bjectstyle.org)
Date: Tue Nov 29 2005 - 07:24:28 EST

  • Next message: Andrus Adamchik: "Re: Please help: retrieval and proper usage of per thread DataContext"

    Ok, I got it. I guess I haven't followed the thread from the
    beginning. The problem with reverse engineering is that Oracle JDBC
    driver does return the type as Types.DATE and there is no other hint
    for Cayenne to make the right decision.

    Mike and others, how do you feel about changing OracleAdapter to
    always treat Oracle DATE as JDBC TIMESTAMP? Logically it makes sense,
    as it seems like Oracle does not have a data type that can store date
    but can't store time.

    Andrus

    On Nov 29, 2005, at 12:49 AM, Ingo Feulner wrote:

    > Well, the problem is, that at the first creation of a map out of an
    > existing Oracle database the Oracle DATE field is mapped to the
    > JDBC DATE type, which means that information (i.e. the time) is
    > lost (what might not be expected if you're coming from the Oracle
    > side).
    >
    > - Ingo.
    >
    > Am 28.11.2005 um 21:42 schrieb Andrus Adamchik:
    >
    >> I don't understand why you consider this a bug. If you map it in
    >> the Modeler using *JDBC* DATE type, expect the time part to be lost.
    >>
    >> Meanings of JDBC types are well defined in the spec, independent
    >> from the underlying database. In other words if Oracle happens to
    >> call this type a "DATE", it still should be treated as TIMESTAMP
    >> on the JDBC end. So if you want date+time info be saved, you
    >> should be using TIMESTAMP in Cayenne mapping (that is based on
    >> JDBC). And you are free to use any compatible native database type
    >> with it.
    >>
    >> Andrus
    >>
    >>
    >> On Nov 28, 2005, at 10:35 PM, Ingo Feulner wrote:
    >>
    >>> Hi,
    >>>
    >>> meanwhile I "solved" this issue. Problem is, that the DBAttribute
    >>> mapping of a DATE Column maps to to DATE in the model, and not to
    >>> TIMESTAMP.
    >>> There is a class
    >>> org.objectstyle.cayenne.access.types.UtilDateType which checks
    >>> the DBAttribute and converts a java.util.Date then to the
    >>> appropriate jdbc class.
    >>> But Oracle allows by default to save date + time in a DATE type,
    >>> so I would consider this as a bug.
    >>>
    >>> What do you think?
    >>>
    >>> Regards, Ingo.
    >>>
    >>>
    >>> Am 24.11.2005 um 19:55 schrieb Ingo Feulner:
    >>>
    >>>> Hi,
    >>>>
    >>>> all our inserted dates into an Oracle (10gR2) database are
    >>>> missing the
    >>>> minutes and seconds.
    >>>> The mapping is DB Type DATE to java.util.Date
    >>>> Is there a known issue (JDBC driver, NLS_LANG settings, whatever)
    >>>> (Haven't found one...).
    >>>>
    >>>> We're using Cayenne 1.1.3.
    >>>>
    >>>> Thanks for any help, Ingo.
    >>>>
    >>>>
    >>>
    >>>
    >>
    >>
    >
    >



    This archive was generated by hypermail 2.0.0 : Tue Nov 29 2005 - 07:24:34 EST