persistence@glassfish.java.net

RE: Problem using ManyToMany relationship

From: Romanowski, Tim <tim.romanowski_at_lmco.com>
Date: Wed, 28 Mar 2007 18:23:58 -0400

What else would I use? Isn't that how you define the fetch type?

-----Original Message-----
From: Marina.Vatkina_at_Sun.COM [mailto:Marina.Vatkina_at_Sun.COM]
Sent: Wednesday, March 28, 2007 6:23 PM
To: persistence_at_glassfish.dev.java.net
Subject: Re: Problem using ManyToMany relationship

Tim,

Why did you use @Basic to do it?

thanks,
-marina

Romanowski, Tim wrote:
> Now it blows up, albeit differently. I added the eager fetch:
>
> @Basic(fetch=FetchType.EAGER)
> @ManyToMany
> @JoinTable(name = "team_users",
> joinColumns = {_at_JoinColumn(name = "teamid", referencedColumnName =
> "teamid")},
> inverseJoinColumns = {_at_JoinColumn(name = "username",
> referencedColumnName = "username")})
> private java.util.Collection <com.lmco.gems.persistence.entity.Users>
> userCollection;
>
>
> And got this on deployment (note, both Users and Team entities implement
> Serializable):
>
>
> Exception Description: predeploy for PersistenceUnit [ZadigPU] failed.
> Internal Exception: Exception [TOPLINK-7155] (Oracle TopLink Essentials -
> 2.0 (Build b40-rc (03/20/2007))):
> oracle.toplink.essentials.exceptions.ValidationException
> Exception Description: The type [interface java.util.Collection] for the
> attribute [userCollection] on the entity class [class
> com.my.persistence.entity.Team] is not a valid type for a serialized
> mapping. The attribute type must implement the Serializable interface.
> at
>
com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListe
> ner.java:180)
> at
>
com.sun.enterprise.web.WebModuleListener.lifecycleEvent(WebModuleListener.ja
> va:155)
> at
>
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSuppor
> t.java:130)
> at
> org.apache.catalina.core.StandardContext.start(StandardContext.java:5052)
> at com.sun.enterprise.web.WebModule.start(WebModule.java:308)
> at
>
org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:9
> 60)
> at
> org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:944)
> at
> org.apache.catalina.core.StandardHost.addChild(StandardHost.java:671)
> at
> com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1575)
> at
> com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1216)
> at
>
com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebMod
> uleDeployEventListener.java:169)
> at
>
com.sun.enterprise.server.WebModuleDeployEventListener.moduleDeployed(WebMod
> uleDeployEventListener.java:265)
> at
>
com.sun.enterprise.admin.event.AdminEventMulticaster.invokeModuleDeployEvent
> Listener(AdminEventMulticaster.java:951)
> at
>
com.sun.enterprise.admin.event.AdminEventMulticaster.handleModuleDeployEvent
> (AdminEventMulticaster.java:938)
> at
>
com.sun.enterprise.admin.event.AdminEventMulticaster.processEvent(AdminEvent
> Multicaster.java:448)
> at
>
com.sun.enterprise.admin.event.AdminEventMulticaster.multicastEvent(AdminEve
> ntMulticaster.java:160)
> at
>
com.sun.enterprise.admin.server.core.DeploymentNotificationHelper.multicastE
> vent(DeploymentNotificationHelper.java:295)
> at
>
com.sun.enterprise.deployment.phasing.DeploymentServiceUtils.multicastEvent(
> DeploymentServiceUtils.java:210)
> at
>
com.sun.enterprise.deployment.phasing.ServerDeploymentTarget.sendStartEvent(
> ServerDeploymentTarget.java:285)
> at
>
com.sun.enterprise.deployment.phasing.ApplicationStartPhase.runPhase(Applica
> tionStartPhase.java:119)
> at
>
com.sun.enterprise.deployment.phasing.DeploymentPhase.executePhase(Deploymen
> tPhase.java:95)
> at
>
com.sun.enterprise.deployment.phasing.PEDeploymentService.executePhases(PEDe
> ploymentService.java:892)
> at
>
com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeployment
> Service.java:564)
> at
>
com.sun.enterprise.deployment.phasing.PEDeploymentService.start(PEDeployment
> Service.java:608)
> at
>
com.sun.enterprise.admin.mbeans.ApplicationsConfigMBean.start(ApplicationsCo
> nfigMBean.java:731)
> 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.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:
> 353)
> at
>
com.sun.enterprise.admin.MBeanHelper.invokeOperationInBean(MBeanHelper.java:
> 336)
> at
>
com.sun.enterprise.admin.config.BaseConfigMBean.invoke(BaseConfigMBean.java:
> 448)
> at
>
com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanSer
> verInterceptor.java:836)
> at
> com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:761)
> at sun.reflect.GeneratedMethodAccessor13.invoke(Unknown Source)
> at
>
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
> .java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> com.sun.enterprise.admin.util.proxy.ProxyClass.invoke(ProxyClass.java:77)
> at $Proxy1.invoke(Unknown Source)
> at
>
com.sun.enterprise.admin.server.core.jmx.SunoneInterceptor.invoke(SunoneInte
> rceptor.java:297)
> at
>
com.sun.enterprise.admin.jmx.remote.server.callers.InvokeCaller.call(InvokeC
> aller.java:56)
> at
>
com.sun.enterprise.admin.jmx.remote.server.MBeanServerRequestHandler.handle(
> MBeanServerRequestHandler.java:142)
> at
>
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet
> .processRequest(RemoteJmxConnectorServlet.java:109)
> at
>
com.sun.enterprise.admin.jmx.remote.server.servlet.RemoteJmxConnectorServlet
> .doPost(RemoteJmxConnectorServlet.java:180)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
> at javax.servlet.http.HttpServlet.service(HttpServlet.java:818)
> at
>
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFi
> lterChain.java:398)
> at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:277)
> at
>
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
> Valve.java:255)
> at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:188)
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611
> )
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564
> )
> at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:81)
> at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:193
> )
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611
> )
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564
> )
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067)
> at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :137)
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:611
> )
> at
>
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:564
> )
> at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:558)
> at
> org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1067)
> at
> org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:255)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(
> DefaultProcessorTask.java:618)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(Defa
> ultProcessorTask.java:549)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(Defaul
> tProcessorTask.java:790)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTas
> k(DefaultReadTask.java:326)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadT
> ask.java:248)
> at
>
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadT
> ask.java:199)
> at
> com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:252)
> at
>
com.sun.enterprise.web.connector.grizzly.WorkerThreadImpl.run(WorkerThreadIm
> pl.java:103)
> Caused by: javax.persistence.PersistenceException: Exception
[TOPLINK-28018]
> (Oracle TopLink Essentials - 2.0 (Build b40-rc (03/20/2007))):
> oracle.toplink.essentials.exceptions.EntityManagerSetupException
> Exception Description: predeploy for PersistenceUnit [ZadigPU] failed.
> Internal Exception: Exception [TOPLINK-7155] (Oracle TopLink Essentials -
> 2.0 (Build b40-rc (03/20/2007))):
> oracle.toplink.essentials.exceptions.ValidationException
> Exception Description: The type [interface java.util.Collection] for the
> attribute [userCollection] on the entity class [class
> com.my.persistence.entity.Team] is not a valid type for a serialized
> mapping. The attribute type must implement the Serializable interface.
> at
>
oracle.toplink.essentials.internal.ejb.cmp3.EntityManagerSetupImpl.predeploy
> (EntityManagerSetupImpl.java:615)
> at
>
oracle.toplink.essentials.ejb.cmp3.EntityManagerFactoryProvider.createContai
> nerEntityManagerFactory(EntityManagerFactoryProvider.java:178)
> at
>
com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoad
> erImpl.java:136)
> at
>
com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoad
> erImpl.java:71)
> at
>
com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListe
> ner.java:177)
> ... 71 more
>
>
> -----Original Message-----
> From: Marina.Vatkina_at_Sun.COM [mailto:Marina.Vatkina_at_Sun.COM]
> Sent: Wednesday, March 28, 2007 5:46 PM
> To: persistence_at_glassfish.dev.java.net
> Subject: Re: Problem using ManyToMany relationship
>
> Can you try if setting FetchType=EAGER on the userCollection makes a
> difference?
>
> thanks,
> -marina