2017-01-10 12 views
0

Ниже приведен код ошибки Missing IN or OUT parameter at index:: 1 Я пробовал его без скобок в параметрах IN, таких как ... WHERE p.SALES_TYPE IN :types. но по-прежнему та же ошибка.Собственный запрос IN clause throw sql error

public List getWithinXDays(ArrayList<String> salesTypes,String sId, String xdays) { 

    Query q = em.createNativeQuery("SELECT p.ORDER_ID FROM formtable p WHERE p.SALES_TYPE IN (:types) AND p.MCODE=:sid AND TRUNC(SYSDATE - p.creationdate) <=:days"); 
    q.setParameter("types",salesTypes); 
    q.setParameter("sid",sId); 
    q.setParameter("days",xdays); 
    List salesOrderRow = q.getResultList(); 
    return salesOrderRow; 
} 

StackTrace:

<Jan 10, 2017 4:12:07 PM SGT> <Warning> <EclipseLink> <BEA-2005000> <2017-01-10 16:12:07.551--UnitOfWork(29679273)--Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.3.2.v20111125-r10461): org.eclipse.persistence.exceptions.DatabaseException 
Internal Exception: java.sql.SQLException: Missing IN or OUT parameter at index:: 1 
Error Code: 17041 
+1

удалить фигурные скобки здесь: 'IN (: types)' – Jens

+0

@Jens же ошибка. Я тоже попробовал. –

+0

Что такое valyue salesTypes? N это пустая или нулевая – farrellmr

ответ

1

JPA не поддерживает array параметры для родных запросов. Либо перепишите свой код для использования JPQL, либо установите каждую запись для позиции IN, как описано в следующем ответе: JPA passing list to IN clause in named native query