>> http://datanucleus-appengine.googlecode.com/files/appengine-orm-1.0.4.RC1.zip >> 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. For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=.