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