Hi,

could please somebody tell me, what I'm doing wrong here?

Here is one child datastructure I want to persist:

@PersistenceCapable

public class OfferDetails {

        @PrimaryKey
        @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Key mId;

        @Persistent
        private String mOfferDescription;

        @Persistent
        private Offer mOffer;

        public OfferDetails ()
        {

        }

        public OfferDetails (String offerDesc)
        {
                this ();
                mOfferDescription = offerDesc;
        }
}

And here is the parent

@PersistenceCapable(identityType = IdentityType.APPLICATION,
detachable="true")

public class Offer {
        @PrimaryKey
        @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Key mId;


        @Persistent(mappedBy="mOffer")
        private OfferDetails mOfferDetails;

public Offer( OfferDetails offerDetails)
        {
                this();
                mOfferDetails = offerDetails;
        }
}

Here is the presistance routine:

public class OfferDataAccess {
          private static final long serialVersionUID = -7037344095742126014L;
          private PersistenceManager pm;

          public OfferDataAccess ()
          {
                  pm = PMF.get().getPersistenceManager();
          }

        public void persistOffer (Offer offer)
        {
                pm.currentTransaction().begin();
                try {
                        pm.makePersistent(offer);
                        pm.currentTransaction().commit();
                } finally {
                        if (pm.currentTransaction().isActive())
                                pm.currentTransaction().rollback();
                        pm.close();
                }
        }

And here is the call of the persistance routine:
class CreateOfferActionCommand
{
        public void execute() {
                mOfferDB = new OfferDataAccess ();
                mOffer = new Offer (mOfferDetails);
                mOfferDB.persistOffer (mOffer);
}
}

Now if I run this code, I get following errormessage:

java.lang.IllegalStateException: Primary key for object of type
OfferDetails is null.
        at
org.datanucleus.store.appengine.EntityUtils.getPkAsKey(EntityUtils.java:
152)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.getKeyForObject(DatastoreFieldManager.java:
625)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.getParentKeyFromParentField(DatastoreFieldManager.java:
634)
        at
org.datanucleus.store.appengine.DatastoreFieldManager.establishEntityGroup(DatastoreFieldManager.java:
591)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertPreProcess(DatastorePersistenceHandler.java:
338)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObjects(DatastorePersistenceHandler.java:
246)
        at
org.datanucleus.store.appengine.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:
235)
        at
org.datanucleus.state.JDOStateManagerImpl.internalMakePersistent(JDOStateManagerImpl.java:
3185)
        at
org.datanucleus.state.JDOStateManagerImpl.makePersistent(JDOStateManagerImpl.java:
3161)
        at
org.datanucleus.ObjectManagerImpl.persistObjectInternal(ObjectManagerImpl.java:
1298)
        at
org.datanucleus.ObjectManagerImpl.persistObject(ObjectManagerImpl.java:
1175)
        at
org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent(JDOPersistenceManager.java:
669)
        at
org.datanucleus.jdo.JDOPersistenceManager.makePersistent(JDOPersistenceManager.java:
694)
        at
com.sparradar.server.datamodel.offer.OfferDataAccess.persistOffer(OfferDataAccess.java:
29)
        at
com.sparradar.server.action.actioncommands.CreateOfferActionCommand.execute(CreateOfferActionCommand.java:
60)
        at
info.rk.vaadinapp.manager.urldispatching.URLActionDispatcher.handleURI(URLActionDispatcher.java:
90)
        at com.vaadin.ui.Window.handleURI(Window.java:358)
        at
com.vaadin.terminal.gwt.server.AbstractCommunicationManager.handleURI(AbstractCommunicationManager.java:
1830)
        at
com.vaadin.terminal.gwt.server.CommunicationManager.handleURI(CommunicationManager.java:
311)
        at
com.vaadin.terminal.gwt.server.AbstractApplicationServlet.handleURI(AbstractApplicationServlet.java:
912)
        at
com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:
471)
        at
com.vaadin.terminal.gwt.server.GAEApplicationServlet.service(GAEApplicationServlet.java:
231)
        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.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:
51)
        at org.mortbay.jetty.servlet.ServletHandler
$CachedChain.doFilter(ServletHandler.java:1084)
        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:
70)
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
        at com.google.appengine.tools.development.JettyContainerService
$ApiProxyHandler.handle(JettyContainerService.java:352)
        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)


Could you please tell me, what I'm doing wrong here?

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