>> 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=.


Reply via email to