Problem Summary
Error adding new Professional Contact
"detached entity passed to persist: org.oscarehr.common.model.ProfessionalContact"
Expected Result
New contact should be added to contacts list without error
Actual Result
the following error is displayed, contact is not added
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: javax.servlet.ServletException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: org.oscarehr.common.model.ProfessionalContact
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:68)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)
root cause
javax.servlet.ServletException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: org.oscarehr.common.model.ProfessionalContact
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oscar.oscarSecurity.LoginFilter.doFilter(LoginFilter.java:127)
net.sf.cookierevolver.servlet.CRFilterImpl.doFilter(CRFilterImpl.java:60)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.oscarehr.util.LoggedInUserFilter.doFilter(LoggedInUserFilter.java:60)
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:65)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)
root cause
javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: org.oscarehr.common.model.ProfessionalContact
org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:614)
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:226)
sun.reflect.GeneratedMethodAccessor380.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:622)
org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
com.sun.proxy.$Proxy39.persist(Unknown Source)
org.oscarehr.common.dao.AbstractDao.persist(AbstractDao.java:57)
org.oscarehr.common.dao.AbstractDao$$FastClassByCGLIB$$d259da96.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
org.oscarehr.common.dao.ProfessionalContactDao$$EnhancerByCGLIB$$75b8324c.persist(<generated>)
org.oscarehr.common.web.ContactAction.saveProContact(ContactAction.java:318)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:622)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oscar.oscarSecurity.LoginFilter.doFilter(LoginFilter.java:127)
net.sf.cookierevolver.servlet.CRFilterImpl.doFilter(CRFilterImpl.java:60)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.oscarehr.util.LoggedInUserFilter.doFilter(LoggedInUserFilter.java:60)
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:65)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)</generated></generated>
root cause
org.hibernate.PersistentObjectException: detached entity passed to persist: org.oscarehr.common.model.ProfessionalContact
org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:102)
org.hibernate.event.def.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:61)
org.hibernate.impl.SessionImpl.firePersist(SessionImpl.java:645)
org.hibernate.impl.SessionImpl.persist(SessionImpl.java:619)
org.hibernate.impl.SessionImpl.persist(SessionImpl.java:623)
org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:220)
sun.reflect.GeneratedMethodAccessor380.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:622)
org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240)
com.sun.proxy.$Proxy39.persist(Unknown Source)
org.oscarehr.common.dao.AbstractDao.persist(AbstractDao.java:57)
org.oscarehr.common.dao.AbstractDao$$FastClassByCGLIB$$d259da96.invoke(<generated>)
net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:689)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:110)
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:622)
org.oscarehr.common.dao.ProfessionalContactDao$$EnhancerByCGLIB$$75b8324c.persist(<generated>)
org.oscarehr.common.web.ContactAction.saveProContact(ContactAction.java:318)
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:622)
org.apache.struts.actions.DispatchAction.dispatchMethod(DispatchAction.java:274)
org.apache.struts.actions.DispatchAction.execute(DispatchAction.java:194)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oscar.oscarSecurity.LoginFilter.doFilter(LoginFilter.java:127)
net.sf.cookierevolver.servlet.CRFilterImpl.doFilter(CRFilterImpl.java:60)
org.displaytag.filter.ResponseOverrideFilter.doFilter(ResponseOverrideFilter.java:125)
org.oscarehr.util.LoggedInUserFilter.doFilter(LoggedInUserFilter.java:60)
org.oscarehr.util.DbConnectionFilter.doFilter(DbConnectionFilter.java:65)
org.oscarehr.util.ResponseDefaultsFilter.doFilter(ResponseDefaultsFilter.java:69)
org.oscarehr.util.ProblemCheckFilter.doFilter(ProblemCheckFilter.java:188)</generated></generated>
note The full stack trace of the root cause is available in the Apache Tomcat/6.0.35 logs.
Apache Tomcat/6.0.35
Steps to Reporduce
1) Open Master Demographics for a patient
2) Click on Manage Contacts
3) Under Professional Contacts click Add
4) Choose External and click Search
5) Click Add/Edit Professional Contact
6) Enter details and click Save
Reproduce IN
12_1_1 build 380 and newer (fresh install) + Ubuntu 12 LTS (fresh install)
Verified on R12.1 latest build#407. Unable to replicate. Please see attached screenshot.
Screen shot is attached