首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JDOFatalUserException:非法参数(在GAE J上,但不在开发系统上)

JDOFatalUserException:非法参数(在GAE J上,但不在开发系统上)
EN

Stack Overflow用户
提问于 2012-11-23 06:53:30
回答 1查看 402关注 0票数 1

我正在Google App Engine/Java上开发一个应用程序。在我的开发环境中,应用程序运行良好,成功地存储和检索了数据。然而,在上传到应用程序引擎时,我一直收到错误消息"javax.jdo.JDOFatalUserException:非法参数“。从堆栈跟踪来看,这似乎是在我调用(List query.execute()).size()时发生的。相关的堆栈跟踪是。

代码语言:javascript
复制
2012-11-22 23:34:08.512
[s~qalmadev1/1.363360558551053190].<stderr>: javax.jdo.JDOFatalUserException: Illegal argument

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at org.datanucleus.api.jdo.NucleusJDOHelper.getJDOExceptionForNucleusException(NucleusJDOHelper.java:488)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at org.datanucleus.api.jdo.JDOAdapter.getApiExceptionForNucleusException(JDOAdapter.java:1107)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.google.appengine.datanucleus.query.QueryExceptionWrappers$2.get(QueryExceptionWrappers.java:72)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.google.appengine.datanucleus.query.RuntimeExceptionWrappingIterator.hasNext(RuntimeExceptionWrappingIterator.java:103)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.google.appengine.datanucleus.query.LazyResult.resolveAll(LazyResult.java:120)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.google.appengine.datanucleus.query.LazyResult.size(LazyResult.java:115)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.google.appengine.datanucleus.query.StreamingQueryResult.size(StreamingQueryResult.java:151)

W 2012-11-22 23:34:08.516
[s~qalmadev1/1.363360558551053190].<stderr>:    at com.xxx.xxx.appengine.server.CreateEventServlet.doPost(CreateEventServlet.java:115)

我的CreateEventServlet中的第115行是下面代码中的"if()“行

代码语言:javascript
复制
Query query = pm.newQuery("select from com.xxx.xxx.appengine.User "
        + "where key == :userid");
        List<User> result = (List<User>) query.execute(userid);
        if (result != null && result.size() > 0) { // Line 115
            user = result.get(0);
            USER_VALID = true;
        }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-23 18:51:50

找到了问题所在。

代码语言:javascript
复制
Query query = pm.newQuery("select from com.xxx. xxx.appengine.User "
    + "where key == :userid");

在查询中,"userid“指的是通过KeyFactory.keyToString()实现的字符串。使用KeyFactory.stringToKey()将字符串转换回键解决了这个问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13521010

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档