users@jersey.java.net

Problem marshalling JPA entity

From: Comerford, Sean <Sean.Comerford_at_espn3.com>
Date: Tue, 29 Sep 2009 18:39:16 +0000

So Iıve a JPA entity BasketballGame that has a ManyToOne relationship with
Season.

I am able to successfully load a given game from the DB using this in both a
Java main and Java servlet.

But if stick the exact same code in a Jersey method, it throws the following
exception:

javax.persistence.EntityNotFoundException: Unable to find
com.espn.sports.persistence.Season with id
com.espn.sports.persistence.Season$Key_at_7db


Again, exact same code in a standard servlet works fine but throws the
exception when run via the Jersey servlet.

Any guesses as to what could be up?

FYI, the code looks like this.... Full stack trace at end but doesnıt seem
that helpful to me:

      @GET
    @Path("/{gameId}")
    @Produces({"text/xml", "application/xml", "application/json"})
    public BasketballGame getGame(@PathParam("gameId") int gameId) {
        Long id = Long.valueOf(gameId);
        
        entityManager = entityManagerFactory.createEntityManager();
        BasketballGame game = entityManager.find(BasketballGame.class, id);
        
        if (game == null) {
            throw new NotFoundException("Error - no game found w/ id " +
id);
        }
        
        return game;
    }

javax.persistence.EntityNotFoundException: Unable to find
com.espn.sports.persistence.Season with id
com.espn.sports.persistence.Season$Key_at_7db
    at
org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityN
otFound(Ejb3Configuration.java:113)
    at
org.hibernate.proxy.AbstractLazyInitializer.checkTargetState(AbstractLazyIni
tializer.java:154)
    at
org.hibernate.proxy.AbstractLazyInitializer.initialize(AbstractLazyInitializ
er.java:143)
    at
org.hibernate.proxy.AbstractLazyInitializer.getImplementation(AbstractLazyIn
itializer.java:174)
    at
org.hibernate.proxy.pojo.javassist.JavassistLazyInitializer.invoke(Javassist
LazyInitializer.java:190)
    at
com.espn.sports.persistence.Season_$$_javassist_355.getEndDate(Season_$$_jav
assist_355.java)
    at
com.espn.sports.persistence.Season$JaxbAccessorM_getEndDate_setEndDate_java_
util_Date.get(MethodAccessor_Ref.java:52)
    at
com.sun.xml.bind.v2.runtime.reflect.Accessor.getUnadapted(Accessor.java:147)
    at
com.sun.xml.bind.v2.runtime.reflect.TransducedAccessor$CompositeTransducedAc
cessorImpl.hasValue(TransducedAccessor.java:245)
    at
com.sun.xml.bind.v2.runtime.property.SingleElementLeafProperty.serializeBody
(SingleElementLeafProperty.java:96)
    at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImp
l.java:322)
    at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsXsiType(XMLSerializer.java:
681)
    at
com.sun.xml.bind.v2.runtime.property.SingleElementNodeProperty.serializeBody
(SingleElementNodeProperty.java:150)
    at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImp
l.java:322)
    at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeBody(ClassBeanInfoImp
l.java:319)
    at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsSoleContent(XMLSerializer.j
ava:589)
    at
com.sun.xml.bind.v2.runtime.ClassBeanInfoImpl.serializeRoot(ClassBeanInfoImp
l.java:312)
    at
com.sun.xml.bind.v2.runtime.XMLSerializer.childAsRoot(XMLSerializer.java:490
)
    at
com.sun.xml.bind.v2.runtime.MarshallerImpl.write(MarshallerImpl.java:328)
    at
com.sun.xml.bind.v2.runtime.MarshallerImpl.marshal(MarshallerImpl.java:257)
    at
javax.xml.bind.helpers.AbstractMarshallerImpl.marshal(AbstractMarshallerImpl
.java:75)
    at
com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(Abstra
ctRootElementProvider.java:167)
    at
com.sun.jersey.core.provider.jaxb.AbstractRootElementProvider.writeTo(Abstra
ctRootElementProvider.java:143)
    at
com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:
254)
    at
com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(Web
ApplicationImpl.java:724)
    at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebA
pplicationImpl.java:647)
    at
com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebA
pplicationImpl.java:638)
    at
com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:
309)
    at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContain
er.java:425)
    at
com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContain
er.java:590)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:847)
    at
org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFi
lterChain.java:427)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:315)
    at
org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContext
Valve.java:287)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:218)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648
)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593
)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
    at
com.sun.enterprise.web.PESessionLockingStandardPipeline.invoke(PESessionLock
ingStandardPipeline.java:98)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:222
)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648
)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593
)
    at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
    at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:166)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:648
)
    at
org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:593
)
    at
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:587)
    at
org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:1093)
    at
org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:291)
    at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.invokeAdapter(
DefaultProcessorTask.java:666)
    at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.doProcess(Defa
ultProcessorTask.java:597)
    at
com.sun.enterprise.web.connector.grizzly.DefaultProcessorTask.process(Defaul
tProcessorTask.java:872)
    at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.executeProcessorTas
k(DefaultReadTask.java:341)
    at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadT
ask.java:263)
    at
com.sun.enterprise.web.connector.grizzly.DefaultReadTask.doTask(DefaultReadT
ask.java:214)
    at
com.sun.enterprise.web.portunif.PortUnificationPipeline$PUTask.doTask(PortUn
ificationPipeline.java:382)
    at
com.sun.enterprise.web.connector.grizzly.TaskBase.run(TaskBase.java:264)
    at
com.sun.enterprise.web.connector.grizzly.ssl.SSLWorkerThread.run(SSLWorkerTh
read.java:106)
|#]

-- 
Sean Comerford, Software Engineer
ESPN.com Site Architecture Group
Office: 860.766.6454    Cell: 860.329.5842