2013-03-21 7 views
3

Я хочу, чтобы отобразить данные в таблице в приложении двигателя:GAE - Нет мета-данных не найдено

мой метод отображения:

public List<User> getAllEntries() { 
     PersistenceManager pm = PMF.get().getPersistenceManager(); 
     Query q = pm.newQuery(User.class); 
//  q.setOrdering("date desc"); 
     List<User> results = null; 

     try { 
      results = (List<User>) q.execute(); 
      if (!results.isEmpty()) { 
       return results; 
      } 
     } finally { 
      q.closeAll(); 
      pm.close(); 
     } 

     return results; 
    } 

здесь я хочу, чтобы отобразить его в таблице:

<table class="table"> 
        <thead> 
         <tr> 
          <th>#</th> 
          <th>Email</th> 
          <th>Password</th> 
          <th>Date</th> 
          <th style="width: 36px;"></th> 
         </tr> 
        </thead> 
        <tbody> 
         <% 
          for (int i = 0; i < userDAO.getAllEntries().size(); i++) { 
                   %> 
         <tr> 
          <td><%=userDAO.getAllEntries().get(i).getId()%></td> 
          <td><%=userDAO.getAllEntries().get(i).getEmail()%></td> 
          <td><%=userDAO.getAllEntries().get(i).getPassword()%></td> 
          <td><%=userDAO.getAllEntries().get(i).getWhen()%></td> 
         </tr> 
         <% 
          } 
         %> 

        </tbody> 
       </table> 

мой объект домена:

@PersistenceCapable(identityType=IdentityType.APPLICATION) 
public class User { 

    @PrimaryKey 
    @Persistent(valueStrategy=IdGeneratorStrategy.IDENTITY) 
    private long id; 

    // @Persistent 
    // private String name; 

    @Persistent 
    private String email; 

    @Persistent 
    private String password; 

    @Persistent 
    private Date when; 

    public User() { 
     super(); 
    } 

Когда я его запускаю, я получаю:

No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 

Что не так с моим кодом. Все метаданные установлены?

Смотрите здесь:

@Persistent 
private Date when; 

UPDATE

Caused by: 

javax.jdo.JDOFatalUserException: No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 
    at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:498) 
    at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:230) 
    at gaeTrader2.server.dao.DAOUser.getAllEntries(DAOUser.java:44) 
    at org.apache.jsp.centralcommand_jsp._jspService(centralcommand_jsp.java:199) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23) 
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57) 
    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.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:409) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
NestedThrowablesStackTrace: 
No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 
org.datanucleus.exceptions.NucleusFatalUserException: No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 
    at com.google.appengine.datanucleus.query.DatastoreQuery.noMetaDataException(DatastoreQuery.java:1267) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.getSortProperty(DatastoreQuery.java:670) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.addSorts(DatastoreQuery.java:637) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.compile(DatastoreQuery.java:249) 
    at com.google.appengine.datanucleus.query.JDOQLQuery.performExecute(JDOQLQuery.java:158) 
    at org.datanucleus.store.query.Query.executeQuery(Query.java:1789) 
    at org.datanucleus.store.query.Query.executeWithArray(Query.java:1666) 
    at org.datanucleus.store.query.Query.execute(Query.java:1639) 
    at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221) 
    at gaeTrader2.server.dao.DAOUser.getAllEntries(DAOUser.java:44) 
    at org.apache.jsp.centralcommand_jsp._jspService(centralcommand_jsp.java:199) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23) 
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57) 
    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.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:409) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

Caused by: 

No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 
org.datanucleus.exceptions.NucleusFatalUserException: No meta-data for member named date on class gaeTrader2.server.domain.User. Are you sure you provided the correct member name in your query? 
    at com.google.appengine.datanucleus.query.DatastoreQuery.noMetaDataException(DatastoreQuery.java:1267) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.getSortProperty(DatastoreQuery.java:670) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.addSorts(DatastoreQuery.java:637) 
    at com.google.appengine.datanucleus.query.DatastoreQuery.compile(DatastoreQuery.java:249) 
    at com.google.appengine.datanucleus.query.JDOQLQuery.performExecute(JDOQLQuery.java:158) 
    at org.datanucleus.store.query.Query.executeQuery(Query.java:1789) 
    at org.datanucleus.store.query.Query.executeWithArray(Query.java:1666) 
    at org.datanucleus.store.query.Query.execute(Query.java:1639) 
    at org.datanucleus.api.jdo.JDOQuery.execute(JDOQuery.java:221) 
    at gaeTrader2.server.dao.DAOUser.getAllEntries(DAOUser.java:44) 
    at org.apache.jsp.centralcommand_jsp._jspService(centralcommand_jsp.java:199) 
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377) 
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313) 
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.access$101(PrivilegedJspServlet.java:23) 
    at com.google.appengine.tools.development.PrivilegedJspServlet$2.run(PrivilegedJspServlet.java:59) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at com.google.appengine.tools.development.PrivilegedJspServlet.service(PrivilegedJspServlet.java:57) 
    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.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:123) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:61) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
    at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
    at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
    at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
    at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
    at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
    at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
    at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:94) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:409) 
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
    at org.mortbay.jetty.Server.handle(Server.java:326) 
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
    at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
    at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

ответ

0

Вы когда-нибудь было поле, называемое 'дата' на Вашем объекте домена? У меня была аналогичная проблема, вызванная удалением поля. Ошибка исчезла, когда я перезапустил экземпляр механизма приложения.

Для этого откройте консоль Google Dev, выберите свой проект и перейдите в App Engine> Экземпляры, выберите подходящую версию и нажмите «Завершение работы». В следующий раз, когда ваше приложение получит запрос, оно перезапустит экземпляр, и проблема не исчезнет. В моем случае эта ошибка скрывала другую ошибку, и когда я снова смотрел журналы, это показало мне реальную причину, по которой мой код не работал.

Смежные вопросы