Ok, I'll go ahead with this. Besides I am planning a smaller change.
I wasn't going (yet) to change types.xml, something that would affect
*schema generation*. I just wanted to add logic for special handling
of Oracle DATE during *reverse-engineering*, as this type still
stores date+time on Oracle 9-10 the same way it did before on Oracle 8.
Andrus
On Nov 29, 2005, at 7:10 PM, Mike Kienenberger wrote:
> As I pointed out earlier, the problem is that it depends on what
> version of Oracle you're using :)
>
> I think the switchover was between 8 and 9, so supporting Oracle 9 and
> 10 by default is probably a better choice these days. I don't have a
> problem with whatever defaults we go with because they're just
> defaults and can be changed.
>
> On 11/29/05, Andrus Adamchik <andru..bjectstyle.org> wrote:
>> 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 - 11:23:00 EST