There is a preview release of the entire 1.2.8 SDK available for _local_
testing available for download at
http://code.google.com/p/googleappengine/downloads/list

I realize that won't help you in prod, but if you're not ready to deploy yet
anyway you may find it useful.

Max

On Tue, Nov 24, 2009 at 4:18 PM, Abe Parvand <eparv...@gmail.com> wrote:

> 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)" 
> <maxr+appeng...@google.com<maxr%2bappeng...@google.com>
> >
> 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. <ramanauskas.ado...@gmail.com>
> 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
> > > google-appengine-j...@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> <google-appengine-java%2bunsubscr...@googlegroups.com<google-appengine-java%252bunsubscr...@googlegroups.com>
> >
> > > .
> > > 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
> google-appengine-j...@googlegroups.com.
> To unsubscribe from this group, send email to
> google-appengine-java+unsubscr...@googlegroups.com<google-appengine-java%2bunsubscr...@googlegroups.com>
> .
> For more options, visit this group at
> http://groups.google.com/group/google-appengine-java?hl=en.
>
>
>

--

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 google-appengine-j...@googlegroups.com.
To unsubscribe from this group, send email to 
google-appengine-java+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-appengine-java?hl=en.


Reply via email to