Home » Modeling » EMF » UUID Error(Exception thrown when saving a UUID field)
UUID Error [message #637878] |
Tue, 09 November 2010 09:06 |
tenor Messages: 57 Registered: October 2010 |
Member |
|
|
A) Method Body
public Multiplex createMultiplex(
String name, Float maxAvailBitRate, Integer transportStreamId,
UUID carrierId, Integer startSID, Integer endSID)
throws Exception {
//Asset asset = DomainPackage.eINSTANCE.getDomainFactory().createAsset();
Multiplex mul = DomainPackage.eINSTANCE.getDomainFactory().createMultiplex() ;
//Data Population
mul.setName("onesat");
mul.setMaxAvailableBitRate(2F);
mul.setTransportStreamId(1);
mul.setCarrierContentId(UUID.randomUUID()); // -------- At this line, exception comes
mul.setStartSID(3);
mul.setEndSID(4);
MultiplexDaoImpl.getInstance().saveMultiplex(mul);
return mul;
}
B)
During debugging, it leads to this function.
------------------------------------------------------------ ---------------------------
public Object createFromString(EDataType eDataType, String initialValue) {
switch (eDataType.getClassifierID()) {
case DomainPackage.UUID:
return createUUIDFromString(eDataType, initialValue);
case DomainPackage.CARRIER_TYPE:
return createCarrierTypeFromString(eDataType, initialValue);
case DomainPackage.CARRIER_CONTENT_TYPE:
return createCarrierContentTypeFromString(eDataType, initialValue);
default:
throw new IllegalArgumentException("The datatype '" + eDataType.getName() + "' is not a valid classifier");
}
}
------------------------------------------------------------ --------------------------------------------------
C) Stack Trace
java.lang.IllegalArgumentException: The value 'da6530d2-e847-4877-a874-1c8fee74611a' is invalid.
at org.eclipse.emf.ecore.impl.EFactoryImpl.createFromString(EFa ctoryImpl.java:462)
at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create UUIDFromString(DomainFactoryImpl.java:184)
at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create FromString(DomainFactoryImpl.java:89)
at org.eclipse.emf.teneo.hibernate.mapping.DefaultToStringUserT ype.deepCopy(DefaultToStringUserType.java:91)
at org.hibernate.type.CustomType.deepCopy(CustomType.java:202)
at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:397 )
at org.hibernate.event.def.AbstractSaveEventListener.performSav eOrReplicate(AbstractSaveEventListener.java:303)
at org.hibernate.event.def.AbstractSaveEventListener.performSav e(AbstractSaveEventListener.java:204)
at org.hibernate.event.def.AbstractSaveEventListener.saveWithGe neratedId(AbstractSaveEventListener.java:144)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.sav eWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener .java:210)
at org.hibernate.event.def.DefaultSaveEventListener.saveWithGen eratedOrRequestedId(DefaultSaveEventListener.java:56)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.ent ityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
at org.hibernate.event.def.DefaultSaveEventListener.performSave OrUpdate(DefaultSaveEventListener.java:50)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onS aveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563 )
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
at com.ses.osp.am.internal.dao.impl.TeneoStoreController.saveMu ltiplex(TeneoStoreController.java:66)
at com.ses.osp.am.internal.dao.impl.MultiplexDaoImpl.saveMultip lex(MultiplexDaoImpl.java:97)
at com.ses.osp.am.internal.service.AssetManagementServiceImpl.c reateMultiplex(AssetManagementServiceImpl.java:91)
at com.ses.osp.am.moduletest.TestSaveMultiplex.testSaveMultiple x(TestSaveMultiplex.java:28)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at junit.framework.TestCase.runTest(TestCase.java:168)
at junit.framework.TestCase.runBare(TestCase.java:134)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:124)
at junit.framework.TestSuite.runTest(TestSuite.java:232)
at junit.framework.TestSuite.run(TestSuite.java:227)
at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38Cla ssRunner.java:83)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r un(JUnit4TestReference.java:49)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test Execution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:467)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe sts(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R emoteTestRunner.java:390)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main( RemoteTestRunner.java:197)
|
|
|
Re: [Teneo] UUID Error [message #637883 is a reply to message #637878] |
Tue, 09 November 2010 09:19 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
To be honest I am not sure why this happens. Have you debugged into the EFactoryImpl.createFromString? (I see only stack
traces but no debug info).
Really I always debug into the EMF/Hibernate/etc code if I meet these type of errors. It takes only a few minutes and it
gives you great insights.
btw, if you want to be sure that I look at your post you need to prefix the subject with [Teneo]
gr. Martin
On 11/09/2010 10:06 AM, tenor wrote:
> A) Method Body
>
> public Multiplex createMultiplex(
> String name, Float maxAvailBitRate, Integer transportStreamId, UUID
> carrierId, Integer startSID, Integer endSID) throws Exception {
> //Asset asset = DomainPackage.eINSTANCE.getDomainFactory().createAsset();
> Multiplex mul =
> DomainPackage.eINSTANCE.getDomainFactory().createMultiplex() ;
>
> //Data Population
> mul.setName("onesat");
> mul.setMaxAvailableBitRate(2F);
> mul.setTransportStreamId(1);
> mul.setCarrierContentId(UUID.randomUUID()); // -------- At this line,
> exception comes
> mul.setStartSID(3);
> mul.setEndSID(4);
>
> MultiplexDaoImpl.getInstance().saveMultiplex(mul);
>
> return mul;
>
>
> }
>
> B)
>
> During debugging, it leads to this function.
> ------------------------------------------------------------
> ---------------------------
>
> public Object createFromString(EDataType eDataType, String initialValue) {
> switch (eDataType.getClassifierID()) {
> case DomainPackage.UUID:
> return createUUIDFromString(eDataType, initialValue);
> case DomainPackage.CARRIER_TYPE:
> return createCarrierTypeFromString(eDataType, initialValue);
> case DomainPackage.CARRIER_CONTENT_TYPE:
> return createCarrierContentTypeFromString(eDataType, initialValue);
> default:
> throw new IllegalArgumentException("The datatype '" +
> eDataType.getName() + "' is not a valid classifier");
> }
> }
> ------------------------------------------------------------
> --------------------------------------------------
> C) Stack Trace
>
> java.lang.IllegalArgumentException: The value
> 'da6530d2-e847-4877-a874-1c8fee74611a' is invalid. at
> org.eclipse.emf.ecore.impl.EFactoryImpl.createFromString(EFa
> ctoryImpl.java:462)
> at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create
> UUIDFromString(DomainFactoryImpl.java:184)
> at com.ses.osp.am.external.domain.impl.DomainFactoryImpl.create
> FromString(DomainFactoryImpl.java:89)
> at org.eclipse.emf.teneo.hibernate.mapping.DefaultToStringUserT
> ype.deepCopy(DefaultToStringUserType.java:91)
> at org.hibernate.type.CustomType.deepCopy(CustomType.java:202)
> at org.hibernate.type.TypeFactory.deepCopy(TypeFactory.java:397 )
> at org.hibernate.event.def.AbstractSaveEventListener.performSav
> eOrReplicate(AbstractSaveEventListener.java:303)
> at org.hibernate.event.def.AbstractSaveEventListener.performSav
> e(AbstractSaveEventListener.java:204)
> at org.hibernate.event.def.AbstractSaveEventListener.saveWithGe
> neratedId(AbstractSaveEventListener.java:144)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.sav
> eWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener .java:210)
> at org.hibernate.event.def.DefaultSaveEventListener.saveWithGen
> eratedOrRequestedId(DefaultSaveEventListener.java:56)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.ent
> ityIsTransient(DefaultSaveOrUpdateEventListener.java:195)
> at org.hibernate.event.def.DefaultSaveEventListener.performSave
> OrUpdate(DefaultSaveEventListener.java:50)
> at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onS
> aveOrUpdate(DefaultSaveOrUpdateEventListener.java:93)
> at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:563 )
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:551)
> at org.hibernate.impl.SessionImpl.save(SessionImpl.java:547)
> at com.ses.osp.am.internal.dao.impl.TeneoStoreController.saveMu
> ltiplex(TeneoStoreController.java:66)
> at com.ses.osp.am.internal.dao.impl.MultiplexDaoImpl.saveMultip
> lex(MultiplexDaoImpl.java:97)
> at com.ses.osp.am.internal.service.AssetManagementServiceImpl.c
> reateMultiplex(AssetManagementServiceImpl.java:91)
> at com.ses.osp.am.moduletest.TestSaveMultiplex.testSaveMultiple
> x(TestSaveMultiplex.java:28)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> at java.lang.reflect.Method.invoke(Unknown Source)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38Cla
> ssRunner.java:83)
> at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.r
> un(JUnit4TestReference.java:49)
> at org.eclipse.jdt.internal.junit.runner.TestExecution.run(Test
> Execution.java:38)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
> sts(RemoteTestRunner.java:467)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTe
> sts(RemoteTestRunner.java:683)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(R
> emoteTestRunner.java:390)
> at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(
> RemoteTestRunner.java:197)
>
--
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@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: Teneo [message #638095 is a reply to message #638086] |
Tue, 09 November 2010 21:23 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi,
Comments inline.
gr. Martin
On 11/09/2010 10:12 PM, tenor wrote:
> /**
> * <!-- begin-user-doc -->
> * <!-- end-user-doc -->
> * @generated NOT
> */
> public UUID createUUIDFromString(EDataType eDataType, String
> initialValue) {
> // TODO : THIS IS A HACK - fix later
> if(null == initialValue) return null;
> return UUID.fromString(initialValue); //return
> (UUID)super.createFromString(eDataType, initialValue);
> }
>
>
> The bold part does the trick but surely this is hack as i see it.
> Plz suggest some better approach.
MT>> Sorry I have no better suggestion, You can also let the database generate the uuid (that's what I have experience
with).
>
> A) why there is two way conversion from string to UUID and back to UUID
> and what deep copy is trying to do?
MT>> these generated createFrom* methods are used by xml serialization to convert object values back/forth to strings.
Which deep copy?
>
> B)I have a classic dilemma ie
> I am able to persist and pull data from DB, giving Teneo complete
> freedom ie schema generation on the fly.
>
> BUT, i have to pull data after Test data are filled in Tables using
> regular schema(ie non teneo).
>
> I NEED to know, how to meet this dilemma as surely, i can not pull data
> if i am simply doing HQL like
>
> from Multiplex; as teneo will still generate schema and try to pull data
> from Multiplex table as it sees it , perhaps NOT as it has been created
> by regular schema and test data inserted.
>
> Do i have to perforce drop approach of giving Teneo freedom and use
> something like annotations.xml but some of tables are extra and again it
> will disturb the schema as we are using it ie regular one.
MT>> Yes it is a classic dilemma, if you already have a schema then the only way is to provide an extensive
annotations.xml which maps EMF models to the existing schema. That's what I would do, if the db schema is leading then
you are can be forced to adapt the model a bit so that it fits to the database schema.
Btw, did you know that you can also generate testdata with just a model:
http://wiki.eclipse.org/Texo/Test_Data_Generation
>
> Plz suggest. Thanks
--
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@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: Teneo [message #638403 is a reply to message #638345] |
Thu, 11 November 2010 08:14 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Hi,
I don't recall your model, maybe you have a join table where the statelliteId is used. It does not matter for hibernate,
you can use HQL or criteria querying and it will automatically take care of joining if a join table is involved.
Note that if you save and query in one transaction that to get generated id's in the database you have to flush before
querying.
gr. Martin
On 11/10/2010 11:31 PM, tenor wrote:
> I have List<Transponder> getTranspondersBySatellieId(UUID satelliteId);
>
>
> But during saveTransponder, Teneo does not create any satelliteId
> anywhere in any tables.
> so effectively,i can NOT write query for any specific satelliteId!!
>
> What is the way out?
>
--
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@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
| |
Re: Teneo [message #639817 is a reply to message #639810] |
Wed, 17 November 2010 22:10 |
Martin Taal Messages: 5468 Registered: July 2009 |
Senior Member |
|
|
Comments inline
On 11/17/2010 10:59 PM, tenor wrote:
> As seen in pastebin, we DO get serialized object back from Teneo but
> also get this exception . Any suggestion for this?
>
> http://pastebin.com/LyDzi2Sn
MT>> hmm, not sure but it seems that there is a reference to another object which can't be resolved, so I assume that
the referenced object is not part of the resource and the resource has no way of getting to the object.
>
> Where to set EReference?
MT>> What do you mean? What ereference?
In the book, there was mandatory 4 pre
> requisites for it?
MT>> what 4 prereq?
How to do for UUID type then if ALL of them has to be
> of Eclass ?
MT>> I don't understand, uuid is an eattribute probably
>
>
> Caused by: org.eclipse.emf.ecore.resource.Resource$IOWrappedException:
> Unresolved reference
--
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@springsite.com - mtaal@elver.org
Web: www.springsite.com - www.elver.org
|
|
|
Goto Forum:
Current Time: Fri Apr 26 08:04:12 GMT 2024
Powered by FUDForum. Page generated in 0.03793 seconds
|