Java GAE,JDO,count()不';不行?

Java GAE,JDO,count()不';不行?,java,spring,google-app-engine,jdo,Java,Spring,Google App Engine,Jdo,保存2个实体(在事务中)后使用Spring/JDO在GAE上运行。 调用getById-从数据存储中获取的实体。 调用getCount()时返回“0” 和-on调用getAll()-返回空集合。 @Override public Long getCount() { return ((Integer) getJdoTemplate().execute(new JdoCallback() { @Override public Object doInJdo(PersistenceM

保存2个实体(在事务中)后使用Spring/JDO在GAE上运行。
调用
getById
-从数据存储中获取的实体。
调用
getCount()
时返回“0”
和-on调用
getAll()
-返回空集合。

 @Override
 public Long getCount() {
  return ((Integer) getJdoTemplate().execute(new JdoCallback() {
   @Override
   public Object doInJdo(PersistenceManager pm) throws JDOException {
    Query q = pm.newQuery(getPersistentClass());
    q.setResult("count(this)");
    return q.execute();
   }
  })).longValue();
 }

 @Override
 public void saveOrUpdate(T entity) {
  getJdoTemplate().makePersistent(entity);
 }

 @Override
 public List<T> getAll() {
  return new ArrayList<T>(getJdoTemplate().find(getPersistentClass()));
 }
@覆盖
公共长getCount(){
return((整数)getJdoTemplate().execute(新JdoCallback()){
@凌驾
公共对象doInJdo(PersistenceManager pm)抛出JDOException{
Query q=pm.newQuery(getPersistentClass());
q、 setResult(“count(this)”);
返回q.execute();
}
})).longValue();
}
@凌驾
公共作废保存或更新(T实体){
getJdoTemplate().makePersistent(实体);
}
@凌驾
公共列表getAll(){
返回新的ArrayList(getJdoTemplate().find(getPersistentClass());
}

谷歌的JDO实现目前不支持聚合AFAIK。尝试通过在每次保留新实体时更新其他实体来跟踪计数。如果您经常进行写操作,则需要一个“”计数器

您的问题非常接近,因此阅读这些答案可能会有所帮助。

count()实际上是在GAE/J的插件中实现的,如图所示


如果您对此有问题,建议您向Google提供一个测试用例,并在他们的问题追踪器上为他们的GAE/J DN插件提出一个问题(“链接页面上的问题”)

我不确定您在该页面上链接的是什么。fulfillBatchDeleteQuery重要吗?因为他们的代码已经更新,而且链接也会出错。。。使用最新的代码-事实仍然是,它们支持count(),通过对该代码的简单回顾可以看出。。。如果有人费心做这样的事情,哈哈哈,现在链接又死了。