2010-03-13 11 views
0

Sur GAE avec Spring/JDO après avoir enregistré 2 entités (en transaction).
Lors de l'appel getById - entités extraites du stockage de données.
Lors de l'appel getCount() renvoie "0"
et - sur appelant getAll() - renvoie la collection vide.

GAE, JDO, count() ne fonctionne pas?

@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())); 
} 

Répondre

0

la mise en œuvre de Google de JDO ne supporte pas les agrégats AFAIK. Essayez de garder une trace du nombre en mettant à jour une autre entité chaque fois que vous persistez une nouvelle entité. Si vous faites des écritures fréquentes, vous aurez besoin d'un compteur "sharded".

Votre question est assez proche de this one, donc la lecture de ces réponses peut aider. comte

0

() est effectivement mis en œuvre dans le plug-in de GAE/J, comme on le voit ici http://code.google.com/p/datanucleus-appengine/source/browse/trunk/src/org/datanucleus/store/appengine/query/DatastoreQuery.java#341

Si vous avez un problème avec elle suggère alors que vous fournissez un testcase Google et soulever une question sur leur sujet suivi pour leur plugin GAE/J DN ("Problèmes" sur la page liée)

+0

Je ne suis pas sûr de ce que vous liez sur cette page. est fulfbleBatchDeleteQuery significatif? –

+0

Depuis que leur code est mis à jour et que les liens vissés ... en utilisant le dernier code http://code.google.com/p/datanucleus-appengine/source/browse/trunk/src/org/datanucleus/store/appengine/query /DatastoreQuery.java # 361 - Le fait demeure, ils supportent count(), comme on peut le voir par une simple revue de ce code ... si quelqu'un devait faire une telle chose – DataNucleus

+0

Hahaha, et maintenant le lien est à nouveau mort. – fabspro