We have standardized on java.util.Calendar in our application, and
HibernatUTC is working well for us, except that I am getting a
ClassCastException when I attempt to use HibernateUTC with a version
column. The database is set to automatically generate a timestamp on
insert or update. My Hibernate mapping looks like this:
<version name="lastUpdated" generated="always"
type="whi.core.data.hibernate.HibernateUTC$CalendarType"
column="LastUpdated"/>
Even though I have generated="always" in my mapping file, if I do not
initialize the data for this column in my application, Hibernate seems
to be generating a "seed" value. When it does, I get the error that
follows. I would prefer to never set this column value (since it is
database-generated) but for the moment, I am setting the value to the
current date as a workaround. I haven't taken the time to look into
the Hibernate code to see what is going on.
Here's the error:
java.lang.ClassCastException:
whi.core.data.hibernate.HibernateUTC$CalendarType
at org.hibernate.type.CustomType.seed(CustomType.java:203)
at org.hibernate.engine.Versioning.seed(Versioning.java:55)
at org.hibernate.engine.Versioning.seedVersion
(Versioning.java:86)
at
org.hibernate.event.def.AbstractSaveEventListener.substituteValuesIfNece
ssary(AbstractSaveEventListener.java:404)
at
org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate
(AbstractSaveEventListener.java:270)
at
org.hibernate.event.def.AbstractSaveEventListener.performSave
(AbstractSaveEventListener.java:181)
at
org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId
(AbstractSaveEventListener.java:107)
at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGenerat
edOrRequestedId(DefaultSaveOrUpdateEventListener.java:187)
at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransie
nt(DefaultSaveOrUpdateEventListener.java:172)
at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUp
date(DefaultSaveOrUpdateEventListener.java:94)
at
org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate
(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireSaveOrUpdate
(SessionImpl.java:507)
at org.hibernate.impl.SessionImpl.saveOrUpdate
(SessionImpl.java:499)
at org.hibernate.impl.SessionImpl.saveOrUpdate
(SessionImpl.java:495)
at
org.springframework.orm.hibernate3.HibernateTemplate$16.doInHibernate
(HibernateTemplate.java:696)
at
org.springframework.orm.hibernate3.HibernateTemplate.execute
(HibernateTemplate.java:373)
at
org.springframework.orm.hibernate3.HibernateTemplate.saveOrUpdate
(HibernateTemplate.java:693) |