【发布时间】:2017-09-21 06:09:12
【问题描述】:
错误消息:org.hibernate.hql.ast.QuerySyntaxException:意外令牌
@SuppressWarnings("unused")
@Transactional
public List<String> getPartsFromMainOrder(String orders) {
Session session = sessionFactory.getCurrentSession();
String sql = "SELECT distinct partno FROM VendorOrderedItems WHERE orderno in (:OrderNo)"
+ " ORDER BY partno";
Query query = session.createQuery(sql);
query.setInteger("OrderNo", Integer.parseInt(orders));
List<String> partsList = query.list();
session.flush();
session.clear();
return partsList;
}
第一种方法查询有效。到达 query.setParameter("Partno",partno); 时发生意外令牌错误;
@SuppressWarnings("unused")
@Transactional
public List<SelectedOrderItems> getSelectedOrderItems(List<String> lqs, String orders) {
Session session = sessionFactory.getCurrentSession();
List<SelectedOrderItems> lso = new ArrayList<SelectedOrderItems>();
MultiMap multiMap = new MultiValueMap();
String[] ord = orders.split(",");
for (String partno : lqs) {
String str1 = "SELECT price , orderno, quantity FROM vendorordereditems WHERE partno =:partNo "
+ " AND orderno in (" + orders + ") "
+ " AND price > 0 " + "ORDER BY price,orderno desc Limit 1";
Query query = session.createQuery(str1);
query.setParameter("partNo", partno);
【问题讨论】:
-
那可能是哪个令牌?
orders的值是多少?我们应该如何为您提供这样的帮助? -
订单的数据类型是什么?在这种情况下,这可能就是问题所在。
-
@Mailkov 不错的拖钓
-
订单数据类型为字符串。
-
@Shoaib 有什么价值?如果
orders的格式很乱,比如末尾多了一个逗号,就很容易破解。