Hi,

I have two entities called UserAccount and Kiosk. They have a mxn
relationship.
Below are the class definitions for these two entities.

public class UserAccount implements JsonBean {

        @PrimaryKey
        @Persistent
        private String userId;

        // non-persistent derived fields
        private List<Kiosk> kiosks;
}

public class Kiosk implements JsonBean {
        @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Long kioskId;

        //non-persistent derived fields
        private List<PoolGroup> poolGroups;
        private List<UserAccount> users;
}

I am using a separate table to maintain the relationship between the
two entities.

public class UserToKiosk {

        @PrimaryKey
    @Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
        private Long UserToKioskId;
        @Persistent
        private String userId;
        @Persistent
        private Long kioskId;
}

When I try to save the userAccount object I am getting the following
exception:

javax.jdo.JDOUserException: Error in meta-data for
org.lggi.samaanguru.entity.Kiosk.kioskId: Cannot have a java.lang.Long
primary key and be a child object (owning field is
org.lggi.samaanguru.entity.UserAccount.kiosks).
        at
org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException
(NucleusJDOHelper.java:427)
        at org.datanucleus.jdo.JDOPersistenceManager.jdoMakePersistent
(JDOPersistenceManager.java:673)
        at org.datanucleus.jdo.JDOPersistenceManager.makePersistent
(JDOPersistenceManager.java:693)
        at org.lggi.samaanguru.service.impl.AccountsServiceImpl.addAccount
(AccountsServiceImpl.java:55)
        at org.lggi.samaanguru.servlet.TestServlet.executeTestCase1
(TestServlet.java:217)
        at org.lggi.samaanguru.servlet.TestServlet.doGet(TestServlet.java:41)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
        at org.lggi.samaanguru.servlet.JsonRestServlet.service
(JsonRestServlet.java:89)
        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 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:306)
        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)

Even though, the list of kiosks in the UserAccount object is not
persistent, JDO is treating this as an owned relationship. Why is
that? I want JDO to ignore this list of kiosks completely. Any way to
do that?

Thanks,
Juhee

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