Senhores,
Minha aplicação está reportando o seguinte erro:
[org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/CancerFamilialWeb].[default]] - [ERROR] - [StandardWrapperValve.invoke:253] - Servlet.service() for servlet default threw exception
org.hibernate.HibernateException: Illegal attempt to associate a collection with two open sessions
at org.hibernate.collection.AbstractPersistentCollection.setCurrentSession(AbstractPersistentCollection.java:410)
at org.hibernate.event.def.OnUpdateVisitor.processCollection(OnUpdateVisitor.java:43)
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:101)
at org.hibernate.event.def.AbstractVisitor.processValue(AbstractVisitor.java:61)
at org.hibernate.event.def.AbstractVisitor.processEntityPropertyValues(AbstractVisitor.java:55)
at org.hibernate.event.def.AbstractVisitor.process(AbstractVisitor.java:123)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.performUpdate(DefaultSaveOrUpdateEventListener.java:293)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.entityIsDetached(DefaultSaveOrUpdateEventListener.java:223)
at org.hibernate.event.def.DefaultUpdateEventListener.performSaveOrUpdate(DefaultUpdateEventListener.java:33)
at org.hibernate.event.def.DefaultSaveOrUpdateEventListener.onSaveOrUpdate(DefaultSaveOrUpdateEventListener.java:70)
at org.hibernate.impl.SessionImpl.fireUpdate(SessionImpl.java:568)
at org.hibernate.impl.SessionImpl.update(SessionImpl.java:556)
at org.hibernate.impl.SessionImpl.update(SessionImpl.java:548)
at br.xx.xxxx.framework.dao.hibernate.impl.HibernateGenericDaoStaticImpl.update(HibernateGenericDaoStaticImpl.java:187)
at br.xx.xxx.framework.repository.HibernateGenericRepository.atualizar(HibernateGenericRepository.java:21)
at br.xxx.xxx.cancerfamilial.domain.facade.CancerFamilial.atualizarUsuario(CancerFamilial.java:32)
at br.xxx.xxx.cancerfamilial.webapp.action.UsuarioAction.alterar(UsuarioAction.java:195)
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 com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:404)
at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:267)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:229)
at br.xxx.xxx.cau.ext.webapp.interceptor.CAUInterceptor.intercept(CAUInterceptor.java:35)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:224)
at com.opensymphony.xwork2.DefaultActionInvocation$2.doProfiling(DefaultActionInvocation.java:223)
at com.opensymphony.xwork2.util.profiling.UtilTimerStack.profile(UtilTimerStack.java:455)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:221)
at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:221)
at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:86)
O método é esse:
public void update(Entity entity){
Session session = HibernateStaticSessionFactory.getCurrentSession();
HibernateStaticSessionFactory.beginTransaction();
try {
session.flush();
session.clear();
session.update(entity);
if(isLocalScope()){
HibernateStaticSessionFactory.commit();
}
} catch (Exception ex){
HibernateStaticSessionFactory.rollback();
throw new DAOException("Falha ao atualizar objeto.", ex);
}
}
Esse método é de um framework que a gente usa aqui na empresa, não foi desenvolvido por mim.
O erro é relacionado a seções de BD. Será que está faltando alguma coisa neste framework no que diz respeito ao gerenciamento da seção?