查询在数据库(derby)中运行正常,但在java中执行时会抛出异常

时间:2015-01-17 10:45:28

标签: java ejb derby

我的第一个问题!

所以我的查询在数据库中工作正常,但是当我调用运行查询的methid时,会抛出异常。下面是代码。

 @Override
public String lastID() {
    String x = "SELECT TICKETNO FROM TICKET ORDER BY TICKETNO DESC";
    return (String) em.createQuery(x).getResultList().get(0);
}

这是异常的一部分

Caused by: Exception [EclipseLink-0] (Eclipse Persistence Services - 2.5.2.v20140319-9ad6abd): org.eclipse.persistence.exceptions.JPQLExceptionException Description: Syntax error parsing [SELECT TICKETNO FROM TICKET ORDER BY TICKETNO DESC].[28, 28]An identification variable must be provided for a range variable declaration.

1 个答案:

答案 0 :(得分:0)

据我所知,你的String变量“x”包含一个SQL语句(因为你在数据库中运行它)。但是当您使用createQuery方法创建Query时,必须使用JPQL表达式作为参数:Oracle Docs

因此,您应该更改x变量的内容以包含JPQL表达式,或者您应该使用createNativeQuery方法:

return (String) em.createQuery(x).getResultList().get(0);

我希望有所帮助。