2010-10-28 5 views
0

J'applique l'application sur Google App Engine et je rencontre des problèmes pour obtenir des données en utilisant JDO. J'ai la classe Message, qui a la propriété private List<String> labels;. Maintenant, je veux avoir une fonction de recherche qui prend une chaîne (label) comme paramètre et recherche tous les messages pour obtenir des messages avec l'étiquette donnée. Le problème est à la requête JDO, en ce moment je cette (chaîne this.label est un paramètre de recherche):JDO + GoogleAppEngine - classe de recherche par valeur dans la collection

String query = "select from " + Message.class.getName() + " where (labels.contains('" + this.label + "')) "; 

Il fonctionne sur localhost, mais pas dans GAE (retourne NULL). Une autre (et naïve) tentative a été

query = "select from " + Note.class.getName() + " where labels=='" + this.label + "'"; 

Et il a également travaillé que sur localhost, non GAE

Est-ce que quelqu'un a une idée de comment faire cela? Merci pour toute aide

+0

Aucune idée pourquoi les choses faire ou ne fonctionnent pas, mais juste pour dire que le second n'est pas valide JDOQL alors mieux vaut oublier celui-là. Oui GAE/J les gens peuvent dire qu'ils le soutiennent mais c'est une subversion de la spécification JDO. Le Collection.contains() est un appel de méthode valide – DataNucleus

Répondre

0

Fondamentalement, votre déclaration est erronée. Il devrait être quelque chose comme:

chaîne de requête = "SELECT FROM" + Message.class.getName() + "OÙ labels.contains (i) & & i.label == labelParam" + " VARIABLES" + Labels.class.getName() + « i » + « parameter java.lang.String labelParam »

Bonne chance

Questions connexes