J'ai une application appengine qui fonctionne depuis environ un an, j'utilise principalement les requêtes JDO jusqu'à maintenant, mais j'essaie de collecter des statistiques et les requêtes sont en cours. trop long. J'ai l'entité suivante (périphérique)Comment sélectionner une propriété parmi d'autres?
public class Device implements Serializable{
...
@Persistent
private Set<Key> feeds;// Key for the Feed entity
...
}
Je veux donc connaître le nombre de périphériques ayant un certain flux. Je le faisais en JDOQL avant en tant que tel (utilise javax.jdo.Query):
Query query = pm.newQuery("select from Device where feeds.contains(:feedKey)");
Map<String, Object> paramsf = new HashMap<String, Object>();
paramsf.put("feedKey",feed.getId());
List<Device> results = (List<Device>) query.executeWithMap(paramsf);
Bien que cette fois de code maintenant. J'essayais d'utiliser l'API de Datastore pour pouvoir définir la taille de bloc, etc. pour voir si je pouvais accélérer la requête ou utiliser un curseur, mais je ne sais pas comment chercher dans un champ Set. Je tentais ce (utilise com.google.appengine.api.datastore.Query)
Query query = new Query("Device");
query.addFilter("feeds", FilterOperator.IN, feed.getId());
query.setKeysOnly();
final FetchOptions fetchOptions = FetchOptions.Builder.withPrefetchSize(100).chunkSize(100);
QueryResultList<Entity> results = dss.prepare(query).asQueryResultList(fetchOptions);
Essentiellement, je ne suis pas sûr comment rechercher dans les un-à-plusieurs déposés (flux) pour une seule touche. Est-il possible de l'indexer d'une manière ou d'une autre?
espoir il est logique ....
merci qui a fait l'affaire ... – siliconeagle