の文字列を含むクエリでClassCastExceptionが私が予期しない例外が発生しましたjava.lang.ClassCastException:java.lang.Characterをキャストできません。 com.google.appengine.api.datastore.KeyのAppEngine:</p> <p>com.google.gwt.user.server.rpc.UnexpectedException::サービスメソッドの公開抽象java.langで私はGoogle App EngineプロジェクトでLENG
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)
にこれは私のJPA-コードです:
@Entity
public class Test {
@Id
String id;
}
そして、これは、アプリケーション・コードである:
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.
それは長さ2を持つStringにはないながら、長さ1の文字列を持つクエリは、例外が発生することが判明しました。誰でもここで何が起こっているのか説明できますか?回避策はありますか?
これを行うとどうなりますか? '' test xからxを選択してください。id = \ "1 \" " – thejh
それが解決すれば、例外は発生しません。文字列リテラルは単一引用符で囲まれているため、奇妙です(http://download.oracle.com/docs/cd/E14571_01/apirefs.1111/e13946/ejb3_langref.html#ejb3_langref_lit) – bspoel
アプリエンジンの問題:http://code.google.com/p/datanucleus-appengine/issues/detail?id=21の問題は非常に似ています – bspoel