java.sql.SQLSyntaxErrorException:Syntaxfehler:遇到“:”

时间:2014-11-07 16:51:35

标签: java sql jpa

我得到了 SQLSyntaxErrorException

这是错误跟踪的简短摘录。

Caused by: Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.1.v20130918-f2b9fc5): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: java.sql.SQLSyntaxErrorException: Syntaxfehler: Encountered ":" at line 1, column 40.
Error Code: 20000
Call: select * from book where price between :min59 and :max59
Query: ReadAllQuery(referenceClass=Book sql="select * from book where price between :min59 and :max59")

我致电

createNativeQuery("select * from book where price between :min59 and :max59", Book.class)

然后我用

设置两个参数
query.setParameter("min59", 20.0); query.setParameter("max59", 30.0);

期间发生异常
query.getResultList();

环境:

  • EclipseLink 2.5.1
  • Apache Derby 10.X

任何想法有什么不对?

1 个答案:

答案 0 :(得分:0)

您使用原生查询,因此您的查询必须像这样"从书中选择*哪个价格介于?之间?和?"。

如果使用查询(jpql),则可以按名称进行映射。

在这里你必须用参数的数量来表示: query.setParameter(1,20.0); query.setParameter(2,30.0);

编辑:对于命名参数"使用EclipseLink,您可以使用EclipseLink#约定在本机查询中指定命名参数。"来自http://www.eclipse.org/eclipselink/documentation/2.5/concepts/queries006.htm