【发布时间】:2020-02-01 07:38:21
【问题描述】:
org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:第 1 行第 8 列附近的 TOP [SELECT TOP 10 IServe.ID FROM TopUp.dbo.IServe WHERE ExpireDate >= '2019-10-03' AND TelcoID = '2' AND ProductID = '2' AND RechargeAmt = '100.0' AND Available = 1 ORDER BY ExpireDate, SN]
String query3 = "SELECT TOP " + importStockList.getOrderQuantity() +" IServe.ID FROM IServe WHERE "
+ " ExpireDate >= '" + sqlDate + "' " + " AND TelcoID = '" + importStockList.getTelcoId()
+ "' AND ProductID = '" + importStockList.getProductId() + "' AND " + "RechargeAmt = '"
+ importStockList.getRechargeAmt() + "' AND Available = 1 ORDER BY ExpireDate, SN" ;
Session hbsessionSQL = HibernateUtilSQL.getSessionFactory().openSession();
List<Iserve> iserve = hbsessionSQL.createQuery(query3).list();
你能帮我解决这个错误吗?我被困在这里了
【问题讨论】:
-
HQL 不支持“TOP”(或一般的 SQL 语法 - 这就是为什么它被称为 HQL 而不是 SQL)。
-
不应该是
select .... LIMIT 1吗? -
您是否考虑过在语句末尾使用
LIMIT 10而不是在开头使用TOP 10? -
即使在使用 LIMIT 之后,我仍然遇到同样的错误。仅供参考,我正在使用 SQL 数据库