2017-04-24 6 views
-2

오류 메시지 : 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); 
+0

를 참조 할 수 있습니다 그리고는 토큰을 할 수 있는가? ''명령''의 가치는 무엇입니까? 우리가 너를 어떻게 도와 줄 수 있니? – f1sh

+0

주문의 데이터 유형은 무엇입니까? 이 경우 문제 일 수 있습니다. –

+0

@Mailkov nice trolling – Andremoniy

답변

0

문제는 +에 "AND에 orderno ("+ 명령 + ")는"

왜 당신이 한 번 제거하고 시도하지 않는 것 같다. 그것이 작동하는 경우,

로 교체 AND에 orderno (: 주문)

당신이 passing list to IN clause in HQL or SQL?

+0

오전 오류가 발생하여 전체 코드를 업로드하십시오. 한번만 검토하십시오 – Shoaib

+0

단계별로 시도하십시오 ... "AND orderno in ("+ orders + ")"를 삭제하십시오. 이것이 문제를 일으키는 지 확인합니다. –