Hi everybody,
I'm getting a strange behaviour on my mapping file when I try to add one-to-many relation between two beans. This is the mapping:
.............. <component name="amountRichiesto"> <property name="litersRichiesti" access="field" type="LiterType"/> <property name="liters15Richiesti" access="field" type="Liter15Type"/> <property name="kilosRichiesti" access="field" type="KiloType"/> </component> <many-to-one name="prodottoFiscale" class="it.loginet.petrol.domain.core.ProdottoFiscale"/>
<property name="litersCarico" access="field" type="LiterType" not-null="true"/> <property name="kilosCarico" access="field" type="KiloType" not-null="true"/> <component name="quantitaErogata" access="field"> <property name="liters" access="field" type="LiterType"/> <property name="liters15" access="field" type="Liter15Type"/> <property name="kilos" access="field" type="KiloType"/> <property name="densita" access="field" type="DensitaType" precision="5" scale="4"/> <property name="densita15" access="field" type="Densita15Type" precision="5" scale="4"/> <property name="portata" access="field" type="PortataType"/> <property name="temperatura" access="field" type="TemperatureType"/> </component> <many-to-one name="serbatoio" class="it.loginet.petrol.domain.core.Serbatoio" access="field"/> <many-to-one name="viaggio" class="it.loginet.petrol.domain.viaggio.ViaggioBuonoRC" access="field" insert="false" update="false"/> <property name="numeroAllibramento" access="field"/>
<set name="additiviViaggio" cascade="all" access="field" inverse="true"> <cache usage="read-write"/> <key column="buonorc" /> <one-to-many class="it.loginet.petrol.domain.viaggio.AdditivoViaggio"/> </set> ...................
The last <set> is the problematic one; if I run my test's suite, hibernate tells me this kind of error:
it.loginet.commons.persistence.RepositoryException: Errore durante il salvataggio di Autista: autista1, Mezzo: PAP313, Data Partenza: 11/11/2008, Id/Num Viaggio: 111100 at it.loginet.commons.persistence.BasicRepository.save(BasicRepository.java:40) at it.loginet.petrol.domain.viaggio.ViaggioRepository.save(ViaggioRepository.java:78) at it.loginet.petrol.application.carico.RientroProdottoService.createRientroProdotto(RientroProdottoService.java:75) at it.loginet.petrol.application.carico.RientroProdottoServiceIntegrationTest.shouldCreateRientroProdotto(RientroProdottoServiceIntegrationTest.java:60) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.junit.internal.runners.TestMethod.invoke(TestMethod.java:59) at org.junit.internal.runners.MethodRoadie.runTestMethod(MethodRoadie.java:98) at org.junit.internal.runners.MethodRoadie$2.run(MethodRoadie.java:79) at org.junit.internal.runners.MethodRoadie.runBeforesThenTestThenAfters(MethodRoadie.java:87) at org.junit.internal.runners.MethodRoadie.runTest(MethodRoadie.java:77) at org.junit.internal.runners.MethodRoadie.run(MethodRoadie.java:42) at org.junit.internal.runners.JUnit4ClassRunner.invokeTestMethod(JUnit4ClassRunner.java:88) at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51) at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44) at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27) at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37) at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42) at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:50) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197) Caused by: org.hibernate.PropertyAccessException: Exception occurred inside setter of it.loginet.petrol.domain.viaggio.BuonoRC.amountRichiesto at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:89) at org.hibernate.tuple.entity.AbstractEntityTuplizer.setPropertyValues(AbstractEntityTuplizer.java:360) at org.hibernate.tuple.entity.PojoEntityTuplizer.setPropertyValues(PojoEntityTuplizer.java:221) at org.hibernate.persister.entity.AbstractEntityPersister.setPropertyValues(AbstractEntityPersister.java:3594) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:300) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:144) 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:534) at org.hibernate.impl.SessionImpl.saveOrUpdate(SessionImpl.java:526) at org.hibernate.engine.CascadingAction$5.cascade(CascadingAction.java:241) at org.hibernate.engine.Cascade.cascadeToOne(Cascade.java:291) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:239) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192) at org.hibernate.engine.Cascade.cascadeCollectionElements(Cascade.java:319) at org.hibernate.engine.Cascade.cascadeCollection(Cascade.java:265) at org.hibernate.engine.Cascade.cascadeAssociation(Cascade.java:242) at org.hibernate.engine.Cascade.cascadeProperty(Cascade.java:192) at org.hibernate.engine.Cascade.cascade(Cascade.java:153) at org.hibernate.event.def.AbstractSaveEventListener.cascadeAfterSave(AbstractSaveEventListener.java:479) at org.hibernate.event.def.AbstractSaveEventListener.performSaveOrReplicate(AbstractSaveEventListener.java:357) at org.hibernate.event.def.AbstractSaveEventListener.performSave(AbstractSaveEventListener.java:204) at org.hibernate.event.def.AbstractSaveEventListener.saveWithGeneratedId(AbstractSaveEventListener.java:144) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.saveWithGeneratedOrRequestedId(DefaultSaveOrUpdateEventListener.java:210) at org.hibernate.event.def.DefaultSaveEventListener.saveWithGeneratedOrRequestedId(DefaultSaveEventListener.java:56) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsTransient(DefaultSaveOrUpdateEventListener.java:195) at org.hibernate.event.def.DefaultSaveEventListener.performSaveOrUpdate(DefaultSaveEventListener.java:50) at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:93) at org.hibernate.impl.SessionImpl.fireSave(SessionImpl.java:562) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:550) at org.hibernate.impl.SessionImpl.save(SessionImpl.java:546) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.context.ThreadLocalSessionContext$TransactionProtectionWrapper.invoke(ThreadLocalSessionContext.java:342) at $Proxy10.save(Unknown Source) at it.loginet.commons.persistence.BasicRepository.save(BasicRepository.java:37) ... 25 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set(BasicPropertyAccessor.java:66) ... 65 more Caused by: java.lang.IllegalArgumentException: Invalid: prodottoAdditivato at it.loginet.commons.util.Validations.expect(Validations.java:50) at it.loginet.petrol.domain.core.ProdottoAmount.initProdottoFisico(ProdottoAmount.java:52) at it.loginet.petrol.domain.viaggio.BuonoRC.setAmountRichiesto(BuonoRC.java:122) ... 70 more
If I comment that part of the mapping, everything runs fine and quiet...the subject of the error seems not to be related to the mapping I'm trying to add. Anybody has seen this behaviour before?
I appreciate any kind of help :)
Thanks in advance, Leonardo
|