collection is not associated with any session hibernate exception

3,138 views
Skip to first unread message

socorro

unread,
Apr 9, 2009, 3:57:57 PM4/9/09
to beanlib
Hi,

I've been working with cloning some hibernate objects and have unit
tests that seem to work nicely. Then, I went to integrate the cloning
into my application and found that what had worked in the unit tests
failed in the app with (apologies, long stack trace):

-----------------------------
13:44:04,341 ERROR BeanPopulator:39 -
propertyName=scheduledPadLocations
readerMethod=public java.util.Set
alma.tmcdb.domain.Antenna.getScheduledPadLocations()
setterMethod=public void
alma.tmcdb.domain.Antenna.setScheduledPadLocations(java.util.Set)
fromBean=BaseElement ( alma.tmcdb.domain.Antenna@207203 id = 1
name = DV01 configurationId = 0 type = Antenna )
toBean=BaseElement ( alma.tmcdb.domain.Antenna@2071e4 id = null
name = DV01 configurationId = null type = Antenna )

org.hibernate.HibernateException: collection is not associated with
any session
at
org.hibernate.collection.AbstractPersistentCollection.forceInitialization
(AbstractPersistentCollection.java:471)
at org.hibernate.Hibernate.initialize(Hibernate.java:332)
at
net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection
(Hibernate3CollectionReplicator.java:78)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:101)
at net.sf.beanlib.provider.BeanTransformer.transform
(BeanTransformer.java:224)
at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
at net.sf.beanlib.provider.BeanPopulator.processSetterMethod
(BeanPopulator.java:172)
at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:
270)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean
(ReplicatorTemplate.java:174)
at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean
(BeanReplicator.java:173)
at
net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean
(Hibernate3JavaBeanReplicator.java:71)
at
net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable
(ReplicatorTemplate.java:125)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:120)
at net.sf.beanlib.provider.BeanTransformer.transform
(BeanTransformer.java:224)
at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
at net.sf.beanlib.provider.BeanPopulator.processSetterMethod
(BeanPopulator.java:172)
at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:
270)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean
(ReplicatorTemplate.java:174)
at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean
(BeanReplicator.java:173)
at
net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean
(Hibernate3JavaBeanReplicator.java:71)
at
net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable
(ReplicatorTemplate.java:125)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:120)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:67)
at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicate
(Hibernate3CollectionReplicator.java:143)
at
net.sf.beanlib.provider.replicator.CollectionReplicator.replicateCollection
(CollectionReplicator.java:88)
at
net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection
(Hibernate3CollectionReplicator.java:79)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:101)
at net.sf.beanlib.provider.BeanTransformer.transform
(BeanTransformer.java:224)
at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
at net.sf.beanlib.provider.BeanPopulator.processSetterMethod
(BeanPopulator.java:172)
at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:
270)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean
(ReplicatorTemplate.java:174)
at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean
(BeanReplicator.java:173)
at
net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean
(Hibernate3JavaBeanReplicator.java:71)
at
net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable
(ReplicatorTemplate.java:125)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:120)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:67)
at net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicate
(Hibernate3CollectionReplicator.java:143)
at
net.sf.beanlib.provider.replicator.CollectionReplicator.replicateCollection
(CollectionReplicator.java:88)
at
net.sf.beanlib.hibernate3.Hibernate3CollectionReplicator.replicateCollection
(Hibernate3CollectionReplicator.java:79)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:101)
at net.sf.beanlib.provider.BeanTransformer.transform
(BeanTransformer.java:224)
at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:201)
at net.sf.beanlib.provider.BeanPopulator.processSetterMethod
(BeanPopulator.java:172)
at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:
270)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean
(ReplicatorTemplate.java:174)
at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean
(BeanReplicator.java:173)
at
net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean
(Hibernate3JavaBeanReplicator.java:71)
at
net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable
(ReplicatorTemplate.java:125)
at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate
(ReplicatorTemplate.java:120)
at net.sf.beanlib.provider.BeanTransformer.transform
(BeanTransformer.java:224)
at net.sf.beanlib.hibernate.HibernateBeanReplicator.copy
(HibernateBeanReplicator.java:133)
at net.sf.beanlib.hibernate.HibernateBeanReplicator.copy
(HibernateBeanReplicator.java:111)
at alma.tmcdb.cloning.CloningUtils.cloneConfiguration
(CloningUtils.java:102)
at alma.obops.dam.HibernateDao.cloneConfiguration(HibernateDao.java:
240)
at
alma.obops.dam.tmcdb.service.ConfigurationServiceImpl.cloneConfiguration
(ConfigurationServiceImpl.java:128)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:45)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:599)
at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
(AopUtils.java:310)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
(ReflectiveMethodInvocation.java:182)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
(ReflectiveMethodInvocation.java:149)
at
org.springframework.transaction.interceptor.TransactionInterceptor.invoke
(TransactionInterceptor.java:106)
at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
(ReflectiveMethodInvocation.java:171)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke
(JdkDynamicAopProxy.java:204)
at $Proxy1.cloneConfiguration(Unknown Source)
at alma.obops.tmcdbgui.handlers.CloneConfigurationAction.run
(CloneConfigurationAction.java:49)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection
(ActionContributionItem.java:583)
at org.eclipse.jface.action.ActionContributionItem.access$2
(ActionContributionItem.java:500)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent
(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1158)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:
3401)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3033)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:
2384)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2348)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2200)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:495)
at org.eclipse.core.databinding.observable.Realm.runWithDefault
(Realm.java:288)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench
(Workbench.java:490)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:
149)
at alma.obops.tmcdbgui.rcp.Application.start(Application.java:21)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run
(EclipseAppHandle.java:193)
at
org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication
(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start
(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:386)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run
(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:45)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:37)
at java.lang.reflect.Method.invoke(Method.java:599)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:549)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:504)
at org.eclipse.equinox.launcher.Main.run(Main.java:1236)
at org.eclipse.equinox.launcher.Main.main(Main.java:1212)

-----------------------------
The only thing I can think of that is different between how my code is
invoked in the unit test and how it is invoked in the app is that in
the unit test, I create some objects in memory, persist them using
hibernate, then clone them, whereas in the app I am querying the
database (with hibernate), getting back some hibernate (proxy?)
object, then cloning that. The latter fails, while the former
succeeds. Has anyone else seen this type of behavior? Any suggestions
on how to debug?

Thanks, Steve

Hanson Char

unread,
Apr 9, 2009, 9:38:05 PM4/9/09
to bea...@googlegroups.com
Sounds like the problem is due to the Hibernate object being cloned after the session was closed.  If so, you need to do that before.

socorro

unread,
Apr 14, 2009, 8:00:57 PM4/14/09
to beanlib
It seems that my hibernate entity was not fully hydrated when I did
the clone. If I hydrate it prior to cloning, it seems to work. Not
sure if that's the way it's supposed to work, but that's what I
observed empirically.

On Apr 9, 7:38 pm, Hanson Char <hanson.c...@gmail.com> wrote:
> Sounds like the problem is due to the Hibernate object being cloned after
> the session was closed.  If so, you need to do that before.
>
> ...
>
> read more »
Reply all
Reply to author
Forward
0 new messages