Dans mon projet Google App Engine I a reçu une exception inattendue:Appengine: ClassCastException dans la requête avec chaîne de Leng
com.google.gwt.user.server.rpc.UnexpectedException: méthode de service « de java.lang public abstract .String org.learnjapanese.client.NewAccount.login (java.lang.String, java.lang.String) throws java.lang.IllegalArgumentException 'a jeté une exception inattendue: java.lang.ClassCastException: java.lang.Character ne peut pas être lancé à com.google.appengine.api.datastore.Key
at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:188)
at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
Ceci est mon JPA-code:
@Entity
public class Test {
@Id
String id;
}
Et ceci est le code d'application:
EntityManager manager = EMF.get().createEntityManager();
Query q = manager.createQuery("select x from Test x where id = '12'");
List l = q.getResultList(); // No problem here
q = manager.createQuery("select x from Test x where id = '1'");
l = q.getResultList(); // java.lang.ClassCastException occurs here.
Il se trouve qu'une requête avec une chaîne de longueur 1 provoque l'exception, tandis que la chaîne de longueur 2 ne fonctionne pas. Quelqu'un peut-il expliquer ce qui se passe ici? Y at-il un travail autour?
'" select x from Test x où id = \ "1 \" "' – thejh
Cela le résout, il ne déclenche pas l'exception. Il est étrange cependant, parce que la spécification indique que les littéraux de chaîne sont entourés de guillemets simples (http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_lit) – bspoel
Il peut être un problème avec le moteur de l'application: Le problème sur http://code.google.com/p/datanucleus-appengine/issues/detail?id=21 est très similaire – bspoel