Skip to main content


Eclipse Community Forums
Forum Search:

Search      Help    Register    Login    Home
Home » Modeling » EMF » [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
[CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number [message #865000] Mon, 30 April 2012 07:23 Go to next message
Erdal Karaca is currently offline Erdal KaracaFriend
Messages: 854
Registered: July 2009
Senior Member
I am getting the following exception when trying to persist a graphiti Diagram using the cdo hibernate store (I have set legacy mode on):

java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Number
	at org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertySetter.set(CDOVersionPropertySetter.java:35)
	at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:583)
	at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3822)
	at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:299)
	at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:203)
	at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:129)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:117)
	at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
	at org.hibernate.impl.SessionImpl.fireSaveOrUpdate(SessionImpl.java:685)
	at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:677)
	at org.eclipse.emf.cdo.server.internal.hibernate.HibernateStoreAccessor.doWrite(HibernateStoreAccessor.java:686)
	at org.eclipse.emf.cdo.spi.server.StoreAccessorBase.write(StoreAccessorBase.java:149)
	at org.eclipse.emf.cdo.internal.server.TransactionCommitContext.write(TransactionCommitContext.java:487)
	at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:43)
	at org.eclipse.emf.cdo.spi.server.InternalCommitContext$1.runLoop(InternalCommitContext.java:1)
	at org.eclipse.net4j.util.om.monitor.ProgressDistributor.run(ProgressDistributor.java:96)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicatingCommit(CommitTransactionIndication.java:262)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CommitTransactionIndication.indicating(CommitTransactionIndication.java:96)
	at org.eclipse.emf.cdo.server.internal.net4j.protocol.CDOServerIndicationWithMonitoring.indicating(CDOServerIndicationWithMonitoring.java:109)
	at org.eclipse.net4j.signal.IndicationWithMonitoring.indicating(IndicationWithMonitoring.java:84)
	at org.eclipse.net4j.signal.IndicationWithResponse.doExtendedInput(IndicationWithResponse.java:90)
	at org.eclipse.net4j.signal.Signal.doInput(Signal.java:326)
	at org.eclipse.net4j.signal.IndicationWithResponse.execute(IndicationWithResponse.java:63)
	at org.eclipse.net4j.signal.IndicationWithMonitoring.execute(IndicationWithMonitoring.java:63)
	at org.eclipse.net4j.signal.Signal.runSync(Signal.java:251)
	at org.eclipse.net4j.signal.Signal.run(Signal.java:147)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865015 is a reply to message #865000] Mon, 30 April 2012 07:33 Go to previous messageGo to next message
Erdal Karaca is currently offline Erdal KaracaFriend
Messages: 854
Registered: July 2009
Senior Member
Some debugging hints:

org.eclipse.emf.cdo.server.internal.hibernate.tuplizer.CDOVersionPropertySetter.set(Object, Object, SessionFactoryImplementor)


target parameter = instanceof Diagram (graphiti)
value parameter = String value "0.9.0"

Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865040 is a reply to message #865015] Mon, 30 April 2012 07:45 Go to previous messageGo to next message
Erdal Karaca is currently offline Erdal KaracaFriend
Messages: 854
Registered: July 2009
Senior Member
Some more hints:

the Diagram EClass has a feature of type EString called "version"... maybe cdo or the hibernate store confuses which one to take (cdo's version vs. model class's version)?
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865186 is a reply to message #865040] Mon, 30 April 2012 09:17 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Hi Erdal,
Yes indeed the system gets confused but only if the version db column name is the same as the efeature name. Normally
the version column name is e_version. Did you set the persistence option:
teneo.naming.version_column

to the value 'version'?

In any case this should be allowed, can you enter a bugzilla for this? I can easily solve this.

gr. Martin

On 04/30/2012 09:45 AM, Erdal Karaca wrote:
> Some more hints:
>
> the Diagram EClass has a feature of type EString called "version"... maybe cdo or the hibernate store confuses which one
> to take (cdo's version vs. model class's version)?


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865203 is a reply to message #865186] Mon, 30 April 2012 09:29 Go to previous messageGo to next message
Erdal Karaca is currently offline Erdal KaracaFriend
Messages: 854
Registered: July 2009
Senior Member
Thanks Martin!
Here is the bug report:

https://bugs.eclipse.org/bugs/show_bug.cgi?id=378050
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865227 is a reply to message #865203] Mon, 30 April 2012 09:44 Go to previous messageGo to next message
Erdal Karaca is currently offline Erdal KaracaFriend
Messages: 854
Registered: July 2009
Senior Member
Just found this code in org.eclipse.emf.cdo.server.hibernate.teneo.CDOMappingGenerator.generateMapping(EPackage[], Properties)

    if (!props.containsKey(PersistenceOptions.VERSION_COLUMN_NAME))
    {
      props.put(PersistenceOptions.VERSION_COLUMN_NAME, "version"); //$NON-NLS-1$
    }


It seems that it is automatically set to "version" if there is no option set...
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865228 is a reply to message #865203] Mon, 30 April 2012 09:42 Go to previous messageGo to next message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Okay, I pushed a solution for 4.1 to git. Will be in a next build.

Let me know if it still occurs.

gr. Martin

On 04/30/2012 11:29 AM, Erdal Karaca wrote:
> Thanks Martin!
> Here is the bug report:
>
> https://bugs.eclipse.org/bugs/show_bug.cgi?id=378050


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Re: [CDO/Hibernate] java.lang.ClassCastException: java.lang.String cannot be cast to java.lang.Numbe [message #865318 is a reply to message #865227] Mon, 30 April 2012 10:40 Go to previous message
Martin Taal is currently offline Martin TaalFriend
Messages: 5468
Registered: July 2009
Senior Member
Yes, I don't want to change that. So I solved it in another way.

gr. Martin

On 04/30/2012 11:44 AM, Erdal Karaca wrote:
> Just found this code in org.eclipse.emf.cdo.server.hibernate.teneo.CDOMappingGenerator.generateMapping(EPackage[],
> Properties)
>
>
> if (!props.containsKey(PersistenceOptions.VERSION_COLUMN_NAME))
> {
> props.put(PersistenceOptions.VERSION_COLUMN_NAME, "version"); //$NON-NLS-1$
> }
>
>
> It seems that it is automatically set to "version" if there is no option set...


--

With Regards, Martin Taal

Springsite/Elver.org
Office: Hardwareweg 4, 3821 BV Amersfoort
Postal: Nassaulaan 7, 3941 EC Doorn
The Netherlands
Cell: +31 (0)6 288 48 943
Tel: +31 (0)84 420 2397
Fax: +31 (0)84 225 9307
Mail: mtaal@xxxxxxxx - mtaal@xxxxxxxx
Web: www.springsite.com - www.elver.org
Previous Topic:Texo: how to load xml file?
Next Topic:Checking invariants (embedded in Metamodel) with Diagnostician
Goto Forum:
  


Current Time: Fri Apr 26 20:36:57 GMT 2024

Powered by FUDForum. Page generated in 0.03314 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top