I'm afraid I'm not a hibernate expert, so unless anyone else comments, 
its up to you to figure it out ;-)
Stephen

D.M. wrote:
> I've been digging through the hibernate source files trying to see how
> this can be handled. Somebody with more experience may correct me if
> I'm wrong, but it appears that the Hibernate.TIMESTAMP.nullSafeSet
> method invoked by PersistentLocalDateTime eventually calls
> org.hibernate.type.TimestampType.set(PreparedStatement st, Object
> value, int index), where value is either a java.sql.Timestamp, or an
> object castable to java.util.Date. This method calls
> st.setTimestamp(int index, Timestamp x).
> 
> Is it possible that this can be fixed by extending
> org.hibernate.types.TimestampType, and
> overriding the set method so that it instead calls st.setTimestamp(int
> index, Timestamp x, Calendar cal), using the Calendar to relate the
> time zone to use?
> 
> On Thu, Mar 12, 2009 at 6:56 PM, Stephen Colebourne
> <scolebou...@joda.org> wrote:
>> The conversion from LocalDateTime to the database form is going via
>> DateTime, which is using the time zone.
>>
>> Ideally PersistentLocalDateTime should handle this, although exactly
>> what it should do is open to question.
>>
>> Stephen
>>
>>
>> D.M. wrote:
>>> When attempting to save a LocalDateTime to the database, I am
>>> receiving an error (included below).  My database is Oracle 10g, in
>>> UTC.  My java client is 1.6+, and is running in U.S. Central time
>>> zone.  The time which fails to insert is LocalDateTime(2008,3,9,2,30).
>>>  This time, in the local time zone of the java client, exists in the
>>> DST cutover where 2:00 becomes 3:00. When toDateTime() is called from
>>> within PersistentLocalDateTime.nullSafeSet(), the instant cannot be
>>> created because that instant does not exist in the U.S. Central time
>>> zone.
>>>
>>> So, is this behaving as intended, or is it a bug? The description of
>>> LocalDateTime from the javadoc is "a datetime without a time zone".
>>> Is there an additional implication (as the name of the class would
>>> seem to indicate) that the LocalDateTime occurs in the local time zone
>>> of the client that creates it?  Or should a client be able to save a
>>> LocalDateTime object to the database that represents a local time
>>> somewhere other than the client's default time zone?
>>>
>>> The error is:
>>> java.lang.IllegalArgumentException: Illegal instant due to time zone
>>> offset transition: 2008-03-09T08:30:00.000
>>>         at 
>>> org.joda.time.chrono.ZonedChronology.localToUTC(ZonedChronology.java:143)
>>>         at 
>>> org.joda.time.chrono.ZonedChronology.getDateTimeMillis(ZonedChronology.java:119)
>>>         at 
>>> org.joda.time.chrono.AssembledChronology.getDateTimeMillis(AssembledChronology.java:133)
>>>         at org.joda.time.base.BaseDateTime.<init>(BaseDateTime.java:254)
>>>         at org.joda.time.DateTime.<init>(DateTime.java:293)
>>>         at org.joda.time.LocalDateTime.toDateTime(LocalDateTime.java:634)
>>>         at org.joda.time.LocalDateTime.toDateTime(LocalDateTime.java:619)
>>>         at 
>>> org.joda.time.contrib.hibernate.PersistentLocalDateTime.nullSafeSet(PersistentLocalDateTime.java:99)
>>>         at org.hibernate.type.CustomType.nullSafeSet(CustomType.java:146)
>>>         at 
>>> org.hibernate.persister.entity.AbstractEntityPersister.dehydrate(AbstractEntityPersister.java:1997)
>>>         at 
>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2243)
>>>         at 
>>> org.hibernate.persister.entity.AbstractEntityPersister.insert(AbstractEntityPersister.java:2660)
>>>         at 
>>> org.hibernate.action.EntityInsertAction.execute(EntityInsertAction.java:56)
>>>         at org.hibernate.engine.ActionQueue.execute(ActionQueue.java:250)
>>>         at 
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:234)
>>>         at 
>>> org.hibernate.engine.ActionQueue.executeActions(ActionQueue.java:141)
>>>         at 
>>> org.hibernate.event.def.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:298)
>>>         at 
>>> org.hibernate.event.def.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:27)
>>>         at org.hibernate.impl.SessionImpl.flush(SessionImpl.java:1000)
>>>         at org.hibernate.impl.SessionImpl.managedFlush(SessionImpl.java:338)
>>>         at 
>>> org.hibernate.transaction.JDBCTransaction.commit(JDBCTransaction.java:106)
>>>
>>> ------------------------------------------------------------------------------
>>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
>>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
>>> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
>>> software that enables intelligent coding and step-through debugging.
>>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
>>> _______________________________________________
>>> Joda-interest mailing list
>>> Joda-interest@lists.sourceforge.net
>>> https://lists.sourceforge.net/lists/listinfo/joda-interest
>>>
>> ------------------------------------------------------------------------------
>> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
>> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
>> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
>> software that enables intelligent coding and step-through debugging.
>> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
>> _______________________________________________
>> Joda-interest mailing list
>> Joda-interest@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/joda-interest
>>
> 
> ------------------------------------------------------------------------------
> Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
> powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
> easily build your RIAs with Flex Builder, the Eclipse(TM)based development
> software that enables intelligent coding and step-through debugging.
> Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
> _______________________________________________
> Joda-interest mailing list
> Joda-interest@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/joda-interest
> 

------------------------------------------------------------------------------
Apps built with the Adobe(R) Flex(R) framework and Flex Builder(TM) are
powering Web 2.0 with engaging, cross-platform capabilities. Quickly and
easily build your RIAs with Flex Builder, the Eclipse(TM)based development
software that enables intelligent coding and step-through debugging.
Download the free 60 day trial. http://p.sf.net/sfu/www-adobe-com
_______________________________________________
Joda-interest mailing list
Joda-interest@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/joda-interest

Reply via email to