Advertisement
teefal

institutional memory

Jul 22nd, 2011
225
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 7.75 KB | None | 0 0
  1. TROUBLE WITH MANY-TO-MANY MAP
  2.  
  3. ** CtCase class includes this:
  4.  
  5.     private Map<String,CtContact> mInstitutions = new HashMap<String,CtContact>();
  6.  
  7.     @ManyToMany( cascade = { CascadeType.MERGE, CascadeType.REFRESH } )
  8.     public Map<String,CtContact> getInstitutions()
  9.     {
  10.         return mInstitutions;
  11.     }
  12.  
  13.     public void setInstitutions( Map<String,CtContact> pInstitutions )
  14.     {
  15.         mInstitutions = pInstitutions;
  16.     }
  17.  
  18.     public void addInstitution( String pKey, CtContact pInstitution )
  19.     {
  20.         mInstitutions.put( pKey, pInstitution );
  21.     }
  22.  
  23.     public CtContact getInstitution( String pKey )
  24.     {
  25.         return ( CtContact ) mInstitutions.get( pKey );
  26.     }
  27.  
  28.  
  29.  
  30. ** CtCaseEJB includes this:
  31.  
  32.     public CtCase update( CtCase pCase )
  33.     {
  34.         pCase = em.merge( pCase );
  35.         em.flush();
  36.         return pCase;
  37.     }
  38.  
  39.  
  40. ** managed bean class has this:
  41.  
  42.  
  43.             // get or make referral institution
  44.             CtContact aInstitution = aCase.getInstitution( CtInstitution.NM_REFERRAL );
  45.             if ( aInstitution == null )
  46.             {
  47.                 aInstitution = new CtContact();
  48.                 aCase.addInstitution( CtInstitution.NM_REFERRAL, aInstitution );
  49.             }
  50.  
  51.             ...
  52.  
  53.             aInstitution.setName(  aInstitutionName );
  54.  
  55.             ...
  56.  
  57.             pCaseEJB.update( aCase );
  58.  
  59.  
  60. ** new records save fine, but when updating an existing one, error that happens in CaseEJB.merge() call:
  61.  
  62. [#|2011-07-22T08:31:54.551-0400|WARNING|glassfish3.1|javax.enterprise.system.container.ejb.com.sun.ejb.containers|_ThreadID=101;_ThreadName=Thread-2;|A system exception occurred during an invocation on EJB CtCaseEJB method public net.ctgt.casey.cases.CtCase net.ctgt.casey.cases.CtCaseEJB.update(net.ctgt.casey.cases.CtCase)
  63. javax.ejb.EJBException
  64.     at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194)
  65.     at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092)
  66.  
  67. ...
  68.  
  69. Caused by: Exception [EclipseLink-106] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DescriptorException
  70. Exception Description: The method [setInstitutions] on the object is throwing an exception.
  71. Argument: [{{referral=net.ctgt.casey.contacts.CtContact@115bd99}}]
  72. Internal Exception: java.lang.reflect.InvocationTargetException
  73. Target Invocation Exception: java.lang.NullPointerException
  74. Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[institutions]
  75. Descriptor: RelationalDescriptor(net.ctgt.casey.cases.CtCase --> [DatabaseTable(CTCASE)])
  76.     at org.eclipse.persistence.exceptions.DescriptorException.targetInvocationWhileSettingValueThruMethodAccessor(DescriptorException.java:1754)
  77.     at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:275)
  78.     at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:226)
  79.     at org.eclipse.persistence.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1435)
  80.     at org.eclipse.persistence.internal.indirection.IndirectionPolicy.setRealAttributeValueInObject(IndirectionPolicy.java:324)
  81.     at org.eclipse.persistence.internal.indirection.TransparentIndirectionPolicy.setRealAttributeValueInObject(TransparentIndirectionPolicy.java:405)
  82.     at org.eclipse.persistence.mappings.ForeignReferenceMapping.setRealAttributeValueInObject(ForeignReferenceMapping.java:1500)
  83.     at org.eclipse.persistence.mappings.CollectionMapping.mergeIntoObject(CollectionMapping.java:1489)
  84.     at org.eclipse.persistence.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:3254)
  85.     at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:525)
  86.     at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:263)
  87.     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3467)
  88.     at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:363)
  89.     at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3427)
  90.     at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:452)
  91.     at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:429)
  92.     at com.sun.enterprise.container.common.impl.EntityManagerWrapper.merge(EntityManagerWrapper.java:286)
  93.     at net.ctgt.casey.cases.CtCaseEJB.update(CtCaseEJB.java:68)
  94.     at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
  95.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  96.     at java.lang.reflect.Method.invoke(Method.java:597)
  97.     at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
  98.     at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
  99.     at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
  100.     at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
  101.     at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
  102.     at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
  103.     at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
  104.     at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
  105.     at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
  106.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  107.     at java.lang.reflect.Method.invoke(Method.java:597)
  108.     at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
  109.     at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
  110.     at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
  111.     at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
  112.     at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
  113.     at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
  114.     ... 46 more
  115. Caused by: java.lang.reflect.InvocationTargetException
  116.     at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
  117.     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
  118.     at java.lang.reflect.Method.invoke(Method.java:597)
  119.     at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:247)
  120.     ... 82 more
  121. Caused by: java.lang.NullPointerException
  122.     at java.util.Hashtable.remove(Hashtable.java:436)
  123.     at org.eclipse.persistence.indirection.IndirectMap.remove(IndirectMap.java:586)
  124.     at org.eclipse.persistence.internal.queries.MapContainerPolicy.removeFrom(MapContainerPolicy.java:732)
  125.     at org.eclipse.persistence.internal.queries.ContainerPolicy.removeFrom(ContainerPolicy.java:1379)
  126.     at org.eclipse.persistence.internal.sessions.CollectionChangeRecord.recreateOriginalCollection(CollectionChangeRecord.java:526)
  127.     at org.eclipse.persistence.mappings.CollectionMapping.updateChangeRecord(CollectionMapping.java:1906)
  128.     at org.eclipse.persistence.internal.descriptors.changetracking.AttributeChangeListener.internalPropertyChange(AttributeChangeListener.java:149)
  129.     at org.eclipse.persistence.internal.descriptors.changetracking.AttributeChangeListener.propertyChange(AttributeChangeListener.java:111)
  130.     at net.ctgt.casey.cases.CtCase._persistence_propertyChange(CtCase.java)
  131.     at net.ctgt.casey.cases.CtCase.setInstitutions(CtCase.java)
  132.     ... 86 more
  133. |#]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement