Google app engine java google ap引擎中的一对多关系导致错误?

Google app engine java google ap引擎中的一对多关系导致错误?,google-app-engine,servlets,persistence,jdo,datanucleus,Google App Engine,Servlets,Persistence,Jdo,Datanucleus,我已经实现了一个系统来保存有关用户的信息。 所以我在我的类中有聚合,所以用户类有联系人类的列表…等等 在第一页测试中,它仅用于按电话号码注册用户,必须将用户保存在数据库中,但当我在Google app engine中部署我的项目时,这会导致错误 另一个页面用于更新先前已注册的exist用户,因此此时将添加到用户对象所拥有的列表中 用户类 此页面导致用户测试的注册将获得用户电话号码,注册时应使用此号码创建新用户 测试页 公共类测试扩展了HttpServlet{ public void doGet(

我已经实现了一个系统来保存有关用户的信息。 所以我在我的类中有聚合,所以用户类有联系人类的列表…等等 在第一页测试中,它仅用于按电话号码注册用户,必须将用户保存在数据库中,但当我在Google app engine中部署我的项目时,这会导致错误<500服务器错误>

另一个页面用于更新先前已注册的exist用户,因此此时将添加到用户对象所拥有的列表中

用户类

此页面导致用户测试的注册将获得用户电话号码,注册时应使用此号码创建新用户 测试页

公共类测试扩展了HttpServlet{

public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
        resp.setContentType("text/html");
        resp.getWriter().println("<html><body><form  method = \"POST\"     action=\"/signup\">" + "please enter ur number :"+"<h4><label>name :  <input name =  \"userphoneNUMBER\" type =  \"text \" size =  \"25 \" />  </label>"+"<p> <input type = \"submit\" value = \"Submit\" />"+ "</form></body></html>");

    }
}
此页面将继续更新已存在的用户对象的值


查询中的问题

改变这个

Query query = pm.newQuery("select from " + User.class.getName());


您没有选择任何列。这会导致sql语法错误

否。请不要这样做。这是JDOQL,您的建议无效。服务器错误显然会伴随原因、堆栈跟踪等。对它们保密不会帮助人们向您建议问题出在何处此错误发生于2012-07-15 14:16:11.786/saveinfo 50057ms 0kb Mozilla/5.0 Windows NT 6.1 AppleWebKit/536.11 KHTML,如Gecko Chrome/20.0.1132.57 Safari/536.11 92.253.89.127---[15/Jul/2012:14:16:11-0700]POST/saveinfo HTTP/1.1 500 0 url Mozilla/5.0 Windows NT 6.1 AppleWebKit/536.11 KHTML,如Gecko Chrome/20.0.1132.57 Safari/536.11 myurl ms=58 cpu_ms=19 api_cpu_ms=0 cpm_usd=0.000613实例=00C61B17C530C9A5370089084CBA4CB66E15 W 2012-07-15 14:16:11.782/saveinfojavax.jdo.jdouseXception:标识符应位于org.d的*字符1处atanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusExceptionNucleusJDOHelper.java:375位于org.datanucleus.jdo.JDOQuery.executeJDOQuery.java:230位于sstooree.SaveInfo.doPostSaveInfo.java:44位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:637位于javax.servlet.http.HttpServlet.serviceHttpServlet.java:717因此您使用的查询是wrong…这不是完整的堆栈跟踪。真正的异常是嵌套的。因此,请将其放在帖子中,而不是放在注释中,并格式化为可读。好的,但我认为问题是由于@PersistentmappedBy=otherclass
@SuppressWarnings("serial")
public void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws IOException {
        resp.setContentType("text/html");
        resp.getWriter().println("<html><body><form  method = \"POST\"     action=\"/signup\">" + "please enter ur number :"+"<h4><label>name :  <input name =  \"userphoneNUMBER\" type =  \"text \" size =  \"25 \" />  </label>"+"<p> <input type = \"submit\" value = \"Submit\" />"+ "</form></body></html>");

    }
}
@SuppressWarnings("serial")
public class SignUP extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");
        String user_PhoneNumber=req.getParameter("userphoneNUMBER");
        User obj = new User();
    obj.userNumber=user_PhoneNumber;
    resp.getWriter().println(obj.userNumber );
        PersistenceManager pm = PMF.get().getPersistenceManager();

        try {
            pm.makePersistent(obj);
        } finally {
            pm.close();

        } }  }
    @SuppressWarnings("serial")
public class Testinfo extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/html");
        resp.getWriter().println("<html><body><form  method = \"POST\" action=\"/saveinfo\">" +
                "<center> <h2>please fill this form :</h2> </br> "+
"<h4><label> ContactName :  <input name =  \"ContactName\" type =  \"text \" size =  \"25 \" />  </label>"
+
"<p> <input type = \"submit\" value = \"Submit\" />"+
                "</form></body></html>");
    }
    @SuppressWarnings("serial")
public class SaveInfo extends HttpServlet {
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws IOException {
        resp.setContentType("text/plain");

        String ContactName = req.getParameter("ContactName");
        String ContactNumber = req.getParameter("ContactNumber");
                   PersistenceManager pm = PMF.get().getPersistenceManager();
        Query query = pm.newQuery("select from " + User.class.getName());
        List<User> list = (List<User>) query.execute();
        for (User obj : list) {


            if (obj.userNumber.equals("111")) {
                 pm.currentTransaction().begin();
                                     obj.AddContact(ContactName, ContactNumber);

                pm.makePersistent(obj);

                 pm.currentTransaction().commit(); }
            }
                          pm.close(); }  }
Uncaught exception from servlet
javax.jdo.JDOUserException: Identifier expected at character 1 in "*" at         org.datanucleus.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:375)
at org.datanucleus.jdo.JDOQuery.execute(JDOQuery.java:230)
at sstooree.SaveInfo.doPost(SaveInfo.java:44)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166)
at com.google.apphosting.utils.servlet.ParseBlobUploadFilter.doFilter(ParseBlobUploadFilter.java:102)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.runtime.jetty.SaveSessionFilter.doFilter(SaveSessionFilter.java:35)
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
Query query = pm.newQuery("select from " + User.class.getName());
Query query = pm.newQuery("select * from " + User.class.getName());