[jboss-user] [Persistence, JBoss/CMP, Hibernate, Database] - How do you remove a detached object?

suneetshah2000 do-not-reply at jboss.com
Tue Apr 3 10:59:19 EDT 2007


Hello,

I am trying to delete a record and get the exception below which says that I am trying to delete a detached object.  How can I delete a record?

java.lang.IllegalArgumentException: Removing a detached instance common.service.Service#203
  | 	at org.hibernate.ejb.event.EJB3DeleteEventListener.performDetachedEntityDeletionCheck(EJB3DeleteEventListener.java:45)
  | 	at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:86)
  | 	at org.hibernate.event.def.DefaultDeleteEventListener.onDelete(DefaultDeleteEventListener.java:52)
  | 	at org.hibernate.impl.SessionImpl.fireDelete(SessionImpl.java:766)
  | 	at org.hibernate.impl.SessionImpl.delete(SessionImpl.java:744)
  | 	at org.hibernate.ejb.AbstractEntityManagerImpl.remove(AbstractEntityManagerImpl.java:246)
  | 	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 org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:176)
  | 	at $Proxy19.remove(Unknown Source)
  | 	at diamelle.common.service.ServiceDAOBean.remove(ServiceDAOBean.java:54)
  | 	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 org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:299)
  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:172)
  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
  | 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
  | 	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
  | 	at $Proxy20.remove(Unknown Source)
  | 	at diamelle.common.service.ServiceMgr.removeService(ServiceMgr.java:86)
  | 	at diamelle.common.service.ServiceMgr$$FastClassByCGLIB$$28b3d4a2.invoke(<generated>)
  | 	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
  | 	at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:693)
  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:139)
  | 	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:107)
  | 	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:161)
  | 	at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:628)
  | 	at diamelle.common.service.ServiceMgr$$EnhancerByCGLIB$$245334f0.removeService(<generated>)
  | 	at test.diamelle.common.service.ServiceMgrTest.testRemoveService(ServiceMgrTest.java:65)
  | 	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:164)
  | 	at junit.framework.TestCase.runBare(TestCase.java:130)
  | 	at org.springframework.test.ConditionalTestCase.runBare(ConditionalTestCase.java:69)
  | 	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:120)
  | 	at junit.framework.TestSuite.runTest(TestSuite.java:228)
  | 	at junit.framework.TestSuite.run(TestSuite.java:223)
  | 	at org.junit.internal.runners.OldTestClassRunner.run(OldTestClassRunner.java:35)
  | 	at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.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.java:196)


Unit test Code:

 	@Test
  | 	public void testRemoveService() {
  |  		System.out.println("Service Value = " + service);
  | 		mgr.removeService(service);
  | 		Service srvTest = mgr.getService(service.getServiceId());
  | 		assertNull(srvTest); 	
  | 	}
  | 

RemoveService:

  public void removeService(Service serv) {
  | 	  if (serv == null)
  | 		   throw new NullPointerException("Service object is null");
  | 	  if (serv.getServiceId() == null)
  | 		  throw new NullPointerException("Service id is null");
  | 
  | 	  serviceDao.remove(serv);
  |   }


DAO Code:

    
  | @Transactional( propagation = Propagation.REQUIRED, readOnly = false )
  | 	public void remove(Service persistentInstance) {
  | 		log.debug("removing Service instance");
  | 		try {
  | 			entityManager.remove(persistentInstance);
  | 			
  | 			log.debug("remove successful");
  | 		} catch (RuntimeException re) {
  | 			log.error("remove failed", re);
  | 			throw re;
  | 		}
  | 	


View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4034124#4034124

Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4034124



More information about the jboss-user mailing list