`

GAE中中JPA使用where子句需要注意的地方

阅读更多

GAE中使用JPA进行条件查询时,估计有bug

select o from User o where name=?

 

 然后

query.setParameter(1, "xx");

报错信息如下

HTTP ERROR 500

Problem accessing /admin/install.action. Reason:

    Numbered parameter syntax starting ? but isnt followed by numeric!

Caused by:

Numbered parameter syntax starting ? but isnt followed by numeric!
org.datanucleus.exceptions.NucleusUserException: Numbered parameter syntax starting ? but isnt followed by numeric!
	at org.datanucleus.query.compiler.JPQLParser.processIdentifier(JPQLParser.java:1552)
	at org.datanucleus.query.compiler.JPQLParser.processPrimary(JPQLParser.java:967)
	at org.datanucleus.query.compiler.JPQLParser.processUnaryExpression(JPQLParser.java:908)
	at org.datanucleus.query.compiler.JPQLParser.processMultiplicativeExpression(JPQLParser.java:841)
	at org.datanucleus.query.compiler.JPQLParser.processAdditiveExpression(JPQLParser.java:812)
	at org.datanucleus.query.compiler.JPQLParser.processRelationalExpression(JPQLParser.java:488)
	at org.datanucleus.query.compiler.JPQLParser.processAndExpression(JPQLParser.java:465)
	at org.datanucleus.query.compiler.JPQLParser.processOrExpression(JPQLParser.java:446)
	at org.datanucleus.query.compiler.JPQLParser.processExpression(JPQLParser.java:435)
	at org.datanucleus.query.compiler.JPQLParser.parse(JPQLParser.java:66)
	at org.datanucleus.query.compiler.JavaQueryCompiler.compileFilter(JavaQueryCompiler.java:294)
	at org.datanucleus.query.compiler.JPQLCompiler.compile(JPQLCompiler.java:75)
	at org.datanucleus.store.query.AbstractJPQLQuery.compileInternal(AbstractJPQLQuery.java:246)
	at org.datanucleus.store.query.Query.setImplicitParameter(Query.java:714)
	at org.datanucleus.jpa.JPAQuery.setParameter(JPAQuery.java:449)
	at cn.neilone.appspot.dao.impl.DaoSupport.setQueryParams(DaoSupport.java:100)
	at cn.neilone.appspot.dao.impl.DaoSupport.getScrollData(DaoSupport.java:87)
	at cn.neilone.appspot.dao.impl.DaoSupport.getScrollData(DaoSupport.java:66)
	at cn.neilone.appspot.service.AdminService.addUser(AdminService.java:99)
	at cn.neilone.appspot.service.AdminService$$FastClassByCGLIB$$38d0a0cf.invoke(<generated>)
	at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
	at org.springframework.aop.framework.Cglib2AopProxy$CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:700)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
	at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:106)
	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
	at org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:635)
	at cn.neilone.appspot.service.AdminService$$EnhancerByCGLIB$$d4a1f6f5.addUser(<generated>)
	at cn.neilone.appspot.struts2.TInstallAction.install(TInstallAction.java:42)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:441)
	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:280)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:243)
	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:165)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:252)
	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:179)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:75)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:94)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:130)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:165)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:179)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:237)
	at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:488)
	at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
	at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:91)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
	at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:58)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
	at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122)
	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:70)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:349)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:326)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)

Powered by Jetty://

 貌似是不能根据索引传入参数,我试了一下以下方法,可以解决此问题

name=?0 and pwd=?1

 

分享到:
评论

相关推荐

    GAE使用规则

    GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则GAE使用规则

    spring3+springmvc+jpa2+gae

    实现了spring3+springmvc+jpa2.0+gae之间的集成,项目可直接运行

    基于GAE的Demo

    Eclipse开发 Gae,Struts2,Spring,云计算,学习gae云计算的好例子

    GAE入门教程

    pass之GAE入门教程, 学习GAE

    GAE之webapp框架

    GAE平台开发应用时,简单的webapp框架的使用

    gae-pytorch-master_pytorch_pytorchgae_GAE_自编码器_gaepytorchmaster_

    图自编码器GAE的pytorch实现,参考论文vgae

    GAE框架下使用Timer_框架模块

    GoogleAppEngine(GAE)的定时器java源代码。 GoogleAppEngine(GAE)的定时器java源代码。

    GAE编程指南

    《GAE编程指南》是介绍使用这个强大平台的专家级实践指南。高级工程师Dan sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何使用App Engine的API和可伸缩的服务来实现常见的开发任务。你将会学到有关...

    GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法

    GAE(Google App Engine)空间 GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法使用教程及 GAE域 GAE(Google App Engine)空间申请使用教程及 GAE域名捆绑方法捆绑方法

    GAE上可以用的JAVA 博客源代码

    可以在GAE上直接使用,支持图片上传等。 源代码是修改其他网友的普通blog程序而来,只做了必要的修改,原结构保留 最新版本请去主页下载 http://redpower1998.appspot.com 主页包括原始的普通版本

    gae_in_pytorch-master_GAE_

    图形自动编码器GAE的pytorch实现,可参考论文VGAE

    GAE和SAE的比较

    云计算下的PaaS中的GAE和SAE平台

    GAE--java使用入门.doc

    GAE--java使用入门.doc

    gae编程指南

    《GAE编程指南》是介绍使用这个强大平台的专家级实践指南。高级工程师Dan sanderson将向你讲述如何设计高可伸缩性应用程序的方法,以及如何使用App Engine的API和可伸缩的服务来实现常见的开发任务。你将会学到有关...

    jiql 允许你的应用在GAE上使用SQL语句

    jiql - (允许你的应用在GAE上使用SQL语句) jiql是在JAVA GAE上访问Google Datastore的JDBC wrapper jiql支持标准的sql语言进行访问原版的官方主页 www.jiql.org 由于原版源代码存在一些问题,所以对改版本做了...

    spring+gae

    实现了gae与spring3之间的集成

    百度的bae跟谷歌的gae对比

    百度的bae跟谷歌的gae对比,百度的资源限制很少,但是资源很少,教程很少。。

    GAE包(以配置好,解压可用)

    GAE 集成程序,共有三个软件包,解压后安装包里的python然后运行SDU里的exe文件,最后运行客户端加服务端中localproxy中的proxy.py就可以了

    让gae支持php的方法

    GAE虽然支持java了,但不幸的是依然不支持php 但是我们可以使用基于java的Quercus基本上可以100%的支持PHP语言

Global site tag (gtag.js) - Google Analytics