Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- TROUBLE WITH MANY-TO-MANY MAP
- ** CtCase class includes this:
- private Map<String,CtContact> mInstitutions = new HashMap<String,CtContact>();
- @ManyToMany( cascade = { CascadeType.MERGE, CascadeType.REFRESH } )
- public Map<String,CtContact> getInstitutions()
- {
- return mInstitutions;
- }
- public void setInstitutions( Map<String,CtContact> pInstitutions )
- {
- mInstitutions = pInstitutions;
- }
- public void addInstitution( String pKey, CtContact pInstitution )
- {
- mInstitutions.put( pKey, pInstitution );
- }
- public CtContact getInstitution( String pKey )
- {
- return ( CtContact ) mInstitutions.get( pKey );
- }
- ** CtCaseEJB includes this:
- public CtCase update( CtCase pCase )
- {
- pCase = em.merge( pCase );
- em.flush();
- return pCase;
- }
- ** managed bean class has this:
- // get or make referral institution
- CtContact aInstitution = aCase.getInstitution( CtInstitution.NM_REFERRAL );
- if ( aInstitution == null )
- {
- aInstitution = new CtContact();
- aCase.addInstitution( CtInstitution.NM_REFERRAL, aInstitution );
- }
- ...
- aInstitution.setName( aInstitutionName );
- ...
- pCaseEJB.update( aCase );
- ** new records save fine, but when updating an existing one, error that happens in CaseEJB.merge() call:
- [#|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)
- javax.ejb.EJBException
- at com.sun.ejb.containers.BaseContainer.processSystemException(BaseContainer.java:5194)
- at com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5092)
- ...
- Caused by: Exception [EclipseLink-106] (Eclipse Persistence Services - 2.2.0.v20110202-r8913): org.eclipse.persistence.exceptions.DescriptorException
- Exception Description: The method [setInstitutions] on the object is throwing an exception.
- Argument: [{{referral=net.ctgt.casey.contacts.CtContact@115bd99}}]
- Internal Exception: java.lang.reflect.InvocationTargetException
- Target Invocation Exception: java.lang.NullPointerException
- Mapping: org.eclipse.persistence.mappings.ManyToManyMapping[institutions]
- Descriptor: RelationalDescriptor(net.ctgt.casey.cases.CtCase --> [DatabaseTable(CTCASE)])
- at org.eclipse.persistence.exceptions.DescriptorException.targetInvocationWhileSettingValueThruMethodAccessor(DescriptorException.java:1754)
- at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:275)
- at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:226)
- at org.eclipse.persistence.mappings.DatabaseMapping.setAttributeValueInObject(DatabaseMapping.java:1435)
- at org.eclipse.persistence.internal.indirection.IndirectionPolicy.setRealAttributeValueInObject(IndirectionPolicy.java:324)
- at org.eclipse.persistence.internal.indirection.TransparentIndirectionPolicy.setRealAttributeValueInObject(TransparentIndirectionPolicy.java:405)
- at org.eclipse.persistence.mappings.ForeignReferenceMapping.setRealAttributeValueInObject(ForeignReferenceMapping.java:1500)
- at org.eclipse.persistence.mappings.CollectionMapping.mergeIntoObject(CollectionMapping.java:1489)
- at org.eclipse.persistence.internal.descriptors.ObjectBuilder.mergeIntoObject(ObjectBuilder.java:3254)
- at org.eclipse.persistence.internal.sessions.MergeManager.mergeChangesOfCloneIntoWorkingCopy(MergeManager.java:525)
- at org.eclipse.persistence.internal.sessions.MergeManager.mergeChanges(MergeManager.java:263)
- at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3467)
- at org.eclipse.persistence.internal.sessions.RepeatableWriteUnitOfWork.mergeCloneWithReferences(RepeatableWriteUnitOfWork.java:363)
- at org.eclipse.persistence.internal.sessions.UnitOfWorkImpl.mergeCloneWithReferences(UnitOfWorkImpl.java:3427)
- at org.eclipse.persistence.internal.jpa.EntityManagerImpl.mergeInternal(EntityManagerImpl.java:452)
- at org.eclipse.persistence.internal.jpa.EntityManagerImpl.merge(EntityManagerImpl.java:429)
- at com.sun.enterprise.container.common.impl.EntityManagerWrapper.merge(EntityManagerWrapper.java:286)
- at net.ctgt.casey.cases.CtCaseEJB.update(CtCaseEJB.java:68)
- at sun.reflect.GeneratedMethodAccessor240.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:597)
- at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1052)
- at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1124)
- at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:5367)
- at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:619)
- at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
- at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:571)
- at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doAround(SystemInterceptorProxy.java:162)
- at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:144)
- at sun.reflect.GeneratedMethodAccessor176.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:597)
- at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:862)
- at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:801)
- at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:371)
- at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:5339)
- at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:5327)
- at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:214)
- ... 46 more
- Caused by: java.lang.reflect.InvocationTargetException
- at sun.reflect.GeneratedMethodAccessor133.invoke(Unknown Source)
- at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
- at java.lang.reflect.Method.invoke(Method.java:597)
- at org.eclipse.persistence.internal.descriptors.MethodAttributeAccessor.setAttributeValueInObject(MethodAttributeAccessor.java:247)
- ... 82 more
- Caused by: java.lang.NullPointerException
- at java.util.Hashtable.remove(Hashtable.java:436)
- at org.eclipse.persistence.indirection.IndirectMap.remove(IndirectMap.java:586)
- at org.eclipse.persistence.internal.queries.MapContainerPolicy.removeFrom(MapContainerPolicy.java:732)
- at org.eclipse.persistence.internal.queries.ContainerPolicy.removeFrom(ContainerPolicy.java:1379)
- at org.eclipse.persistence.internal.sessions.CollectionChangeRecord.recreateOriginalCollection(CollectionChangeRecord.java:526)
- at org.eclipse.persistence.mappings.CollectionMapping.updateChangeRecord(CollectionMapping.java:1906)
- at org.eclipse.persistence.internal.descriptors.changetracking.AttributeChangeListener.internalPropertyChange(AttributeChangeListener.java:149)
- at org.eclipse.persistence.internal.descriptors.changetracking.AttributeChangeListener.propertyChange(AttributeChangeListener.java:111)
- at net.ctgt.casey.cases.CtCase._persistence_propertyChange(CtCase.java)
- at net.ctgt.casey.cases.CtCase.setInstitutions(CtCase.java)
- ... 86 more
- |#]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement