2017-04-24 77 views
-2

错误消息:org.hibernate.hql.ast.QuerySyntaxException:意外的标记Java的Hibernate查询,异常

@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); 
+0

和令牌可能有多大呢? ''订单'的价值是什么?我们该如何帮助你呢? – f1sh

+0

订单的数据类型是什么?这可能是这个问题。 –

+0

@Mailkov漂亮的拖钓 – Andremoniy

回答

0

的问题似乎是在+“和orderno中(” +订单+“)”

你为什么不一次删除它,然后再试。如果一切正常,与

替换它并在orderno(:单)

你可以参考 passing list to IN clause in HQL or SQL?

+0

上传完整的代码,其中错误ocurre请检查一次 – Shoaib

+0

请尝试一步一步移除“AND orderno in(”+ orders +“)”。这将确保如果这是造成问题 –