【问题标题】:NullPointer in GAE updating entityGAE 更新实体中的 NullPointer
【发布时间】:2014-11-14 14:02:30
【问题描述】:

我有这种情况:

  • Android App->呼叫端点->getPerson(email)
  • Endpoint 返回我 1 个 Person 对象 p
  • 我在 android 应用中使用这个对象并更改了一些值。
  • Android App->调用端点->updatePerson(p)

我从服务器收到此错误:

com.google.api.server.spi.SystemService 调用服务方法:空 java.lang.NullPointerException 在 com.google.appengine.api.datastore.Key.getAppId(Key.java:279) 在 com.google.appengine.api.datastore.KeyTranslator.convertToPb(KeyTranslator.java:50) 在 com.google.appengine.api.datastore.EntityTranslator.convertToPb(EntityTranslator.java:48) 在 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$4.toPb(AsyncDatastoreServiceImpl.java:178) 在 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl$4.toPb(AsyncDatastoreServiceImpl.java:155) 在 com.google.appengine.api.datastore.Batcher$BatchIterator.(Batcher.java:180) 在 com.google.appengine.api.datastore.Batcher$2.(Batcher.java:317) 在 com.google.appengine.api.datastore.Batcher.getBatches(Batcher.java:317) 在 com.google.appengine.api.datastore.AsyncDatastoreServiceImpl.doBatchPut(AsyncDatastoreServiceImpl.java:365) 在 com.google.appengine.api.datastore.BaseAsyncDatastoreServiceImpl.put(BaseAsyncDatastoreServiceImpl.java:293) 在 com.google.appengine.api.datastore.BaseAsyncDatastoreServiceImpl.put(BaseAsyncDatastoreServiceImpl.java:239) 在 com.google.appengine.api.datastore.DatastoreServiceImpl.put(DatastoreServiceImpl.java:61) 在 com.google.appengine.datanucleus.WrappedDatastoreService.put(WrappedDatastoreService.java:112) 在 com.google.appengine.datanucleus.EntityUtils.putEntitiesIntoDatastore(EntityUtils.java:766) 在 com.google.appengine.datanucleus.DatastorePersistenceHandler.insertObjectsInternal(DatastorePersistenceHandler.java:314) 在 com.google.appengine.datanucleus.DatastorePersistenceHandler.insertObject(DatastorePersistenceHandler.java:218) 在 org.datanucleus.state.JDOStateManager.internalMakePersistent(JDOStateManager.java:2381) 在 org.datanucleus.state.JDOStateManager.flush(JDOStateManager.java:3778) 在 org.datanucleus.ObjectManagerImpl.flushInternalWithOrdering(ObjectManagerImpl.java:3888) 在 org.datanucleus.ObjectManagerImpl.flushInternal(ObjectManagerImpl.java:3811) 在 org.datanucleus.ObjectManagerImpl.flush(ObjectManagerImpl.java:3751) 在 org.datanucleus.ObjectManagerImpl.preCommit(ObjectManagerImpl.java:4141) 在 org.datanucleus.ObjectManagerImpl.transactionPreCommit(ObjectManagerImpl.java:428) 在 org.datanucleus.TransactionImpl.internalPreCommit(TransactionImpl.java:398) 在 org.datanucleus.TransactionImpl.commit(TransactionImpl.java:287) 在 org.datanucleus.ObjectManagerImpl.close(ObjectManagerImpl.java:1090) 在 org.datanucleus.api.jpa.JPAEntityManager.close(JPAEntityManager.java:193)

这不是从数据存储中检索到的同一个对象吗?

【问题讨论】:

  • 您能否发布带有注释的相关端点 api 类方法,以及调用这些函数的 android 代码?在invokeservicemethod上获取空指针异常好像你调用的api方法不存在,所以可能是注释/调用不正确。

标签: java android google-app-engine google-cloud-datastore


【解决方案1】:

你能把你的主键转换成

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;

如果你正在使用

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Key key;

然后再次检查。

【讨论】:

    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多