openjpa-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Marc Prud'hommeaux <mprud...@apache.org>
Subject Re: Cascade question (ver 0.96)
Date Tue, 24 Apr 2007 18:22:41 GMT
Phill-

> The behaviour I am looking for is simply
> persist the relation (i.e. the link field)

If you specify cascade=MERGE on the StoreType relation field, and you  
merge a Store instance for which the StoreType relation doesn't  
already exists, does it not persist the field as if it were new?  
That's the behavior I would expect...



On Apr 23, 2007, at 9:55 PM, Phill Moran wrote:

> Here is a scenario that shows odd behaviour, I want to see if it is  
> expected or
> not. The docs are not clear on it
>
> If I have a many to one relationship for objects Store to Store  
> Type and I
> create a new Store and assign it to an existing Store type does this
> relationship have to have cascasdeType.persist set when I issue a  
> merge on the
> new Store? I had recently removed this as I thought I did not want  
> to create a
> duplicate Store Type whenever I added a new  Store. It seems  
> OpenJPA throws the
> attached exception when I only have CascadeType.Refresh set.
> Alternatively, this could just be a poorly worded exception/ 
> documentation
> meaning OpenJPA would check for the existence of this Store Type  
> and not
> actually persist it if it exists. The behaviour I am looking for is  
> simply
> persist the relation (i.e. the link field)
>
> Thanks,
> 	Phill
> <4|false|0.9.6-incubating>  
> org.apache.openjpa.persistence.ArgumentException:
> Encountered new object
> "ca.BidSpec.emall.categories.Category-105603b-508b-9c6-00f4-4031ba6429 
> e3:0" in
> persistent field "ca.BidSpec.emall.stores.Store.type" of managed  
> object
> "ca.BidSpec.emall.stores.Store@56182f" during attach.  However,  
> this field does
> not allow cascade attach.  You cannot attach a reference to a new  
> object without
> cascading.
> FailedObject:
> ca.BidSpec.emall.categories.Category-105603b-508b-9c6-00f4-4031ba6429e 
> 3:0
> 	at
> org.apache.openjpa.kernel.AttachStrategy.getReference 
> (AttachStrategy.java:272)
> 	at
> org.apache.openjpa.kernel.AttachStrategy.attachField 
> (AttachStrategy.java:189)
> 	at
> org.apache.openjpa.kernel.VersionAttachStrategy.attach 
> (VersionAttachStrategy.jav
> a:130)
> 	at
> org.apache.openjpa.kernel.AttachManager.attach(AttachManager.java:236)
> 	at org.apache.openjpa.kernel.AttachManager.attach 
> (AttachManager.java:97)
> 	at org.apache.openjpa.kernel.BrokerImpl.attach(BrokerImpl.java:3124)
> 	at
> org.apache.openjpa.kernel.DelegatingBroker.attach 
> (DelegatingBroker.java:1120)
> 	at
> org.apache.openjpa.persistence.EntityManagerImpl.merge 
> (EntityManagerImpl.java:59
> 1)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.jav
> a:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at
> org.springframework.orm.jpa.ExtendedEntityManagerCreator 
> $ExtendedEntityManagerIn
> vocationHandler.invoke(ExtendedEntityManagerCreator.java:283)
> 	at $Proxy37.merge(Unknown Source)
> 	at
> ca.BidSpec.emall.persistence.JPAPersistenceFactory.merge 
> (JPAPersistenceFactory.j
> ava:95)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.jav
> a:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio 
> n(AopUtils
> .java:304)
> 	at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke 
> (JdkDynamicAopProxy.j
> ava:197)
> 	at $Proxy35.merge(Unknown Source)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.jav
> a:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at
> org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflectio 
> n(AopUtils
> .java:304)
> 	at
> org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoi 
> npoint(Ref
> lectiveMethodInvocation.java:172)
> 	at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
> (ReflectiveM
> ethodInvocation.java:139)
> 	at
> org.springframework.transaction.interceptor.TransactionInterceptor.inv 
> oke(Transa
> ctionInterceptor.java:107)
> 	at
> org.springframework.aop.framework.ReflectiveMethodInvocation.proceed 
> (ReflectiveM
> ethodInvocation.java:161)
> 	at
> org.springframework.aop.framework.JdkDynamicAopProxy.invoke 
> (JdkDynamicAopProxy.j
> ava:203)
> 	at $Proxy35.merge(Unknown Source)
> 	at
> ca.BidSpec.testing.emall.StoreFactoryTest.testSave 
> (StoreFactoryTest.java:69)
> 	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> 	at
> sun.reflect.NativeMethodAccessorImpl.invoke 
> (NativeMethodAccessorImpl.java:39)
> 	at
> sun.reflect.DelegatingMethodAccessorImpl.invoke 
> (DelegatingMethodAccessorImpl.jav
> a:25)
> 	at java.lang.reflect.Method.invoke(Method.java:597)
> 	at junit.framework.TestCase.runTest(TestCase.java:168)
> 	at junit.framework.TestCase.runBare(TestCase.java:134)
> 	at
> org.springframework.test.ConditionalTestCase.runBare 
> (ConditionalTestCase.java:69
> )
> 	at
> org.springframework.test.annotation.AbstractAnnotationAwareTransaction 
> alTests.ac
> cess$001(AbstractAnnotationAwareTransactionalTests.java:47)
> 	at
> org.springframework.test.annotation.AbstractAnnotationAwareTransaction 
> alTests$1.
> run(AbstractAnnotationAwareTransactionalTests.java:115)
> 	at
> org.springframework.test.annotation.AbstractAnnotationAwareTransaction 
> alTests.ru
> nTest(AbstractAnnotationAwareTransactionalTests.java:180)
> 	at
> org.springframework.test.annotation.AbstractAnnotationAwareTransaction 
> alTests.ru
> nTestTimed(AbstractAnnotationAwareTransactionalTests.java:153)
> 	at
> org.springframework.test.annotation.AbstractAnnotationAwareTransaction 
> alTests.ru
> nBare(AbstractAnnotationAwareTransactionalTests.java:111)
> 	at
> org.springframework.test.jpa.AbstractJpaTests.runBare 
> (AbstractJpaTests.java:159)
> 	at
> org.springframework.test.jpa.AbstractJpaTests.runBare 
> (AbstractJpaTests.java:239)
> 	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.OldTestClassRunner.run 
> (OldTestClassRunner.java:35)
> 	at
> org.junit.internal.runners.CompositeRunner.run(CompositeRunner.java: 
> 29)
> 	at
> org.junit.internal.runners.TestClassRunner$1.runUnprotected 
> (TestClassRunner.java
> :42)
> 	at
> org.junit.internal.runners.BeforeAndAfterRunner.runProtected 
> (BeforeAndAfterRunne
> r.java:34)
> 	at
> org.junit.internal.runners.TestClassRunner.run(TestClassRunner.java: 
> 52)
> 	at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run 
> (JUnit4TestReferen
> ce.java:38)
> 	at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run 
> (TestExecution.java:38)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
> (RemoteTestRunner
> .java:460)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests 
> (RemoteTestRunner
> .java:673)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run 
> (RemoteTestRunner.java
> :386)
> 	at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main 
> (RemoteTestRunner.jav
> a:196)
>


Mime
View raw message