我得到了 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();
环境:
任何想法有什么不对?
答案 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