Illegal attempt to associate a collection with two open sessions

415 views
Skip to first unread message

Ozkar

unread,
Mar 10, 2010, 11:09:52 AM3/10/10
to JavaSOS
Hola muchachos, tengo un problema, seguido me encuentro con este error
y no he podido darle solucion.

Generalmente yo tomo los objetos tras buscarlos en un query y obtener
una coleccion, de esa coleccion tomo uno en particular y en ocasiones
necesito hacer modificaciones al objeto pero cuando intento guardarlo
ya sea con un update o un saveorupdate me arroja esta excepcion.

¿Cómo es la forma correcta de hacer este tipo de operaciones?, ya lo
he googoleado pero no me aclara al 100% mi duda y sigo con el
problema.

por cierto, estoy usando Icefaces 1.8.1, Hibernate, netbeans y
glassfish v3


GRAVE: 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:
564)
at org.hibernate.impl.SessionImpl.update(SessionImpl.java:552)
at org.hibernate.impl.SessionImpl.update(SessionImpl.java:544)
at
ALGOSA.CTRL.CartaCupo.BeanFiltroCC.confirmaMovimientoQ(BeanFiltroCC.java:
3873)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sun.el.parser.AstValue.invoke(AstValue.java:187)
at
com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:297)
at
com.sun.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:
68)
at
javax.faces.event.MethodExpressionActionListener.processAction(MethodExpressionActionListener.java:
99)
at
javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
at
javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:
771)
at javax.faces.component.UICommand.broadcast(UICommand.java:
372)
at
javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:475)
at
javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:
756)
at
com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:
82)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
at
com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at
com.icesoft.faces.webapp.http.core.JsfLifecycleExecutor.apply(JsfLifecycleExecutor.java:
18)
at
com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.renderCycle(ReceiveSendUpdates.java:
132)
at
com.icesoft.faces.webapp.http.core.ReceiveSendUpdates.service(ReceiveSendUpdates.java:
74)
at
com.icesoft.faces.webapp.http.core.RequestVerifier.service(RequestVerifier.java:
31)
at
com.icesoft.faces.webapp.http.common.standard.PathDispatcherServer.service(PathDispatcherServer.java:
24)
at
com.icesoft.faces.webapp.http.servlet.BasicAdaptingServlet.service(BasicAdaptingServlet.java:
16)
at
com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:
23)
at
com.icesoft.faces.webapp.http.servlet.SessionDispatcher.service(SessionDispatcher.java:
53)
at
com.icesoft.faces.webapp.http.servlet.SessionVerifier.service(SessionVerifier.java:
26)
at
com.icesoft.faces.webapp.http.servlet.PathDispatcher.service(PathDispatcher.java:
23)
at
com.icesoft.faces.webapp.http.servlet.MainServlet.service(MainServlet.java:
131)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:
847)
at
com.icesoft.faces.webapp.xmlhttp.BlockingServlet.service(BlockingServlet.java:
56)
at
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:
431)
at
org.apache.catalina.core.StandardWrapperValve.preInvoke(StandardWrapperValve.java:
462)
at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:
139)
at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:
186)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
719)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
657)
at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:
96)
at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLockingStandardPipeline.java:
98)
at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:
187)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
719)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
657)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
651)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:
142)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
719)
at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:
657)
at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:
651)
at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1030)
at
org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:
325)
at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:
242)
at
com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:
180)
at
com.sun.grizzly.http.DefaultProcessorTask.invokeAdapter(DefaultProcessorTask.java:
633)
at
com.sun.grizzly.http.DefaultProcessorTask.doProcess(DefaultProcessorTask.java:
570)
at
com.sun.grizzly.http.DefaultProcessorTask.process(DefaultProcessorTask.java:
827)
at
com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:
152)
at
com.sun.enterprise.v3.services.impl.GlassfishProtocolChain.executeProtocolFilter(GlassfishProtocolChain.java:
71)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:
103)
at
com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:
89)
at
com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:
76)
at
com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:
67)
at
com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:
56)
at
com.sun.grizzly.util.WorkerThreadImpl.processTask(WorkerThreadImpl.java:
325)
at
com.sun.grizzly.util.WorkerThreadImpl.run(WorkerThreadImpl.java:184)

Pablo Saavedra

unread,
Mar 10, 2010, 12:33:13 PM3/10/10
to jav...@googlegroups.com
Estás usando para guardar el objeto la misma sesión con la que lo levantaste?

2010/3/10 Ozkar <ozk...@gmail.com>

--
www.JavaSOS.com
Grupo de colaboración Java/J2ee para desarrolladores de habla hispana.

Oscar Cervantes

unread,
Mar 10, 2010, 12:46:08 PM3/10/10
to jav...@googlegroups.com
se supone que no, despues de que busco el dato siempre cierro la sesion, a menos que no me esté haciendo caso

Pablo Saavedra

unread,
Mar 10, 2010, 12:48:54 PM3/10/10
to jav...@googlegroups.com
Yo usaría la misma sesión, si estás dentro del mismo request tenés más ventajas (cache de nivel 1). Probá asociando el objeto a la otra sesión haciendo merge.

Saludos.

2010/3/10 Oscar Cervantes <ozk...@gmail.com>

Oscar Cervantes

unread,
Mar 10, 2010, 12:50:52 PM3/10/10
to jav...@googlegroups.com
ok, gracias lo intentaré y a ver que resulta
Reply all
Reply to author
Forward
0 new messages