Java GAE,JDO,count()不';不行?
保存2个实体(在事务中)后使用Spring/JDO在GAE上运行。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
调用
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(),通过对该代码的简单回顾可以看出。。。如果有人费心做这样的事情,哈哈哈,现在链接又死了。