I have this exact same problem. So, +1. Temporary workaround? Should
we just omit parent reference in child for now?

On Nov 23, 2:15 pm, "Max Ross (Google)" <[email protected]>
wrote:
> Thanks for the report!  I've made a lot of fixes since the RC1 build but
> they're not backwards-compatible with the 1.2.6 SDK, so unfortunately I
> can't release them until the next SDK is out.  Your test case works for me
> with my latest build so this will behave correctly in the next release.
>
> Thanks,
> Max
>
> On Mon, Nov 23, 2009 at 1:56 PM, R. A. <[email protected]> wrote:
>
> >http://datanucleus-appengine.googlecode.com/files/appengine-orm-1.0.4...
> > >> This release provides support for inheritance of native datastore types
> > and embedded classes.
>
> > Can't get inheritance to run. Tested on *-1.0.3 and *-1.0.4.RC1.
> > Without AbstractEntity, 2 entities with OneToMany relationship works
> > perfectly. Is it the problem with  Key id type? NullPointerException
> > is thrown when i access child list element:
>
> > public void test() {
> >        List<ParentEntity> parents = tdao.load();
> >        for (ParentEntity pe : parents) {
> >                List<ChildEntity> childs = pe.getChilds();
> >                System.out.println(".. childs.size: " + childs.size());
> >                for(ChildEntity ce : childs) { // <----- NPE
> >                }
> >        }
> > }
>
> > @Entity
> > @MappedSuperclass
> > public abstract class AbstractEntity {
>
> >       �...@id
> >       �...@generatedvalue(strategy = GenerationType.IDENTITY)
> >        private Key id;
>
> >        private String name;
> > ...
> > }
>
> > @Entity
> > public class ParentEntity extends AbstractEntity {
>
> >       �...@onetomany(mappedBy="parent", cascade=CascadeType.ALL)
> >        private List<ChildEntity> childs;
> > ...
> > }
>
> > @Entity
> > public class ChildEntity extends AbstractEntity {
>
> >        private Long value;
>
> >       �...@manytoone
> >        private ParentEntity parent;
> > ...
> > }
>
> > Nov 23, 2009 8:20:34 PM com.google.apphosting.utils.jetty.JettyLogger
> > warn
> > WARNING: Nested in
> > org.springframework.web.util.NestedServletException: Request
> > processing failed; nested exception is java.lang.NullPointerException:
> > java.lang.NullPointerException
> >        at
>
> > org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.getObjectForApplicationIdentity
> > (PersistenceCapableMapping.java:971)
> >        at
> > org.datanucleus.store.mapped.mapping.PersistenceCapableMapping.getObject
> > (PersistenceCapableMapping.java:720)
> >        at
> > org.datanucleus.store.appengine.DatastoreRelationFieldManager.lookupParent
> > (DatastoreRelationFieldManager.java:309)
> >        at
>
> > org.datanucleus.store.appengine.DatastoreRelationFieldManager.fetchRelationField
> > (DatastoreRelationFieldManager.java:289)
> >        at
> > org.datanucleus.store.appengine.DatastoreFieldManager.fetchObjectField
> > (DatastoreFieldManager.java:271)
> >        at org.datanucleus.state.AbstractStateManager.replacingObjectField
> > (AbstractStateManager.java:1197)
> >        at gae.test.ChildEntity.jdoReplaceField(ChildEntity.java)
> >        at gae.test.AbstractEntity.jdoReplaceFields(AbstractEntity.java)
> >        at org.datanucleus.state.JDOStateManagerImpl.replaceFields
> > (JDOStateManagerImpl.java:2772)
> >        at org.datanucleus.state.JDOStateManagerImpl.replaceFields
> > (JDOStateManagerImpl.java:2791)
> >        at
> > org.datanucleus.store.appengine.DatastorePersistenceHandler.fetchObject
> > (DatastorePersistenceHandler.java:443)
> >        at org.datanucleus.store.appengine.query.DatastoreQuery.entityToPojo
> > (DatastoreQuery.java:433)
> >        at
>
> > org.datanucleus.store.appengine.DatastoreElementContainerStoreSpecialization.getChildren
> > (DatastoreElementContainerStoreSpecialization.java:103)
> >        at org.datanucleus.store.appengine.DatastoreFKListStore.listIterator
> > (DatastoreFKListStore.java:47)
> >        at
> > org.datanucleus.store.mapped.scostore.AbstractListStore.listIterator
> > (AbstractListStore.java:84)
> >        at org.datanucleus.store.mapped.scostore.AbstractListStore.iterator
> > (AbstractListStore.java:74)
> >        at org.datanucleus.sco.backed.List.loadFromStore(List.java:241)
> >        at org.datanucleus.sco.backed.List.iterator(List.java:507)
> >        at
> > java.util.AbstractCollection.toString(AbstractCollection.java:414)
> >        at java.lang.String.valueOf(String.java:2826)
> >        at java.lang.StringBuilder.append(StringBuilder.java:115)
> >        at gae.test.TestServiceImpl.openParentsWithChilds
> > (TestServiceImpl.java:27)
> >        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.google.appengine.tools.development.agent.runtime.Runtime.invoke
> > (Runtime.java:100)
> >        at
> > org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection
> > (AopUtils.java:307)
> >        at
>
> > org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint
> > (ReflectiveMethodInvocation.java:183)
> >        at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > (ReflectiveMethodInvocation.java:150)
> >        at
> > org.springframework.transaction.interceptor.TransactionInterceptor.invoke
> > (TransactionInterceptor.java:107)
> >        at
> > org.springframework.aop.framework.ReflectiveMethodInvocation.proceed
> > (ReflectiveMethodInvocation.java:172)
> >        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke
> > (JdkDynamicAopProxy.java:202)
> >        at $Proxy28.openParentsWithChilds(Unknown Source)
> >        at gae.test.TestController.test(TestController.java:17)
> >        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.google.appengine.tools.development.agent.runtime.Runtime.invoke
> > (Runtime.java:100)
> >        at
>
> > org.springframework.web.bind.annotation.support.HandlerMethodInvoker.doInvokeMethod
> > (HandlerMethodInvoker.java:654)
> >        at
>
> > org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod
> > (HandlerMethodInvoker.java:160)
> >        at
>
> > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.invokeHandlerMethod
> > (AnnotationMethodHandlerAdapter.java:378)
> >        at
>
> > org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter.handle
> > (AnnotationMethodHandlerAdapter.java:366)
> >        at org.springframework.web.servlet.DispatcherServlet.doDispatch
> > (DispatcherServlet.java:781)
> >        at org.springframework.web.servlet.DispatcherServlet.doService
> > (DispatcherServlet.java:726)
> >        at org.springframework.web.servlet.FrameworkServlet.processRequest
> > (FrameworkServlet.java:636)
> >        at org.springframework.web.servlet.FrameworkServlet.doGet
> > (FrameworkServlet.java:545)
> >        at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
> >        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
> >        at
> > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:
> > 487)
> >        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> > (ServletHandler.java:1093)
> >        at
> > com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter
> > (TransactionCleanupFilter.java:43)
> >        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> > (ServletHandler.java:1084)
> >        at com.google.appengine.tools.development.StaticFileFilter.doFilter
> > (StaticFileFilter.java:121)
> >        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter
> > (ServletHandler.java:1084)
> >        at org.mortbay.jetty.servlet.ServletHandler.handle
> > (ServletHandler.java:360)
> >        at org.mortbay.jetty.security.SecurityHandler.handle
> > (SecurityHandler.java:216)
> >        at org.mortbay.jetty.servlet.SessionHandler.handle
> > (SessionHandler.java:181)
> >        at org.mortbay.jetty.handler.ContextHandler.handle
> > (ContextHandler.java:712)
> >        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> > 405)
> >        at
> > com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle
> > (DevAppEngineWebAppContext.java:54)
> >        at org.mortbay.jetty.handler.HandlerWrapper.handle
> > (HandlerWrapper.java:139)
> >        at com.google.appengine.tools.development.JettyContainerService
> > $ApiProxyHandler.handle(JettyContainerService.java:342)
> >        at org.mortbay.jetty.handler.HandlerWrapper.handle
> > (HandlerWrapper.java:139)
> >        at org.mortbay.jetty.Server.handle(Server.java:313)
> >        at
> > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> > 506)
> >        at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete
> > (HttpConnection.java:830)
> >        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
> >        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
> >        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
> >        at org.mortbay.io.nio.SelectChannelEndPoint.run
> > (SelectChannelEndPoint.java:396)
> >        at org.mortbay.thread.BoundedThreadPool$PoolThread.run
> > (BoundedThreadPool.java:442)
> > Nov 23, 2009 8:20:34 PM com.google.apphosting.utils.jetty.JettyLogger
> > warn
>
> > --
>
> > You received this message because you are subscribed to the Google Groups
> > "Google App Engine for Java" group.
> > To post to this group, send email to
> > [email protected].
> > To unsubscribe from this group, send email to
> > [email protected]<google-appengine-java%[email protected]>
> > .
> > For more options, visit this group at
>
> ...
>
> read more »

--

You received this message because you are subscribed to the Google Groups 
"Google App Engine for Java" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to