eine bis viele beziehung in java google ap engine fehler verursacht?
Ich habe ein System implementiert, um Informationen über Benutzer zu speichern. Also habe ich Aggregation in meiner Klasse, so dass die Benutzerklasse eine Liste von Kontaktklassen hat ... usw. auf der ersten Seite "Teste es nur, um den Benutzer nur nach Telefonnummer zu registrieren", die den Benutzer in der Datenbank speichern muss, aber dies verursacht einen Fehler, wenn ich Stellen Sie mein Projekt in Google App Engine bereit500 Serverfehler>
und die andere Seite zum Aktualisieren des vorhandenen Benutzers, der zuvor registriert worden ist, fügt an dieser Stelle die Liste hinzu, über die das Benutzerobjekt verfügt.
Benutzerklasse
@PersistenceCapable
public class User implements Serializable{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
public String userNumber;
@Persistent (mappedBy = "userC")
public List<Contact> UserContacts =new ArrayList<Contact>();
public void AddContact(String name,String number) {
Contact C=new Contact();
C.ContactName=name;
C.PhoneNumber=number;
this.UserContacts.add(C); }
}
Kontakt Klasse
@PersistenceCapable
public class Contact implements Serializable{
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
public String ContactName;
@Persistent
public String PhoneNumber;
@Persistent
public User userC; }
Auf dieser Seite, wenn Sie sich für den Benutzertest registrieren, wird die Telefonnummer des Benutzers abgerufen und bei der Anmeldung sollte ein neuer Benutzer mit dieser Nummer erstellt werdenTestseite
@SuppressWarnings("serial")
public class Test erweitert 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>");
}
}
Auf dieser Seite geben Sie die Nummer an, um den Benutzer zu erstellen
@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();
} } }
Diese Seite, um die Aktualisierung des Werts bei bereits vorhandenen Benutzerobjekten fortzusetzen
@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>");
}
}
Auf dieser Seite werden die Informationen gespeichert, die Fehler verursachen, und es wird kein Wert in der App-Engine gespeichert
@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(); } }
diese111 zum testen welche ich vorher als benutzertelefonnummer eingegeben habe.
Wie kann ich mit Listen und Aggregationsproblemen umgehen?
Beim Aktualisieren der Benutzerinformationen ist dieser Fehler aufgetreten
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)