Adding IN clause List to a JPA Query Adding IN clause List to a JPA Query java java

Adding IN clause List to a JPA Query


When using IN with a collection-valued parameter you don't need (...):

@NamedQuery(name = "EventLog.viewDatesInclude",     query = "SELECT el FROM EventLog el WHERE el.timeMark >= :dateFrom AND "     + "el.timeMark <= :dateTo AND "     + "el.name IN :inclList") 


The proper JPA query format would be:

el.name IN :inclList

If you're using an older version of Hibernate as your provider you have to write:

el.name IN (:inclList)

but that is a bug (HHH-5126) (EDIT: which has been resolved by now).


public List<DealInfo> getDealInfos(List<String> dealIds) {        String queryStr = "SELECT NEW com.admin.entity.DealInfo(deal.url, deal.url, deal.url, deal.url, deal.price, deal.value) " + "FROM Deal AS deal where deal.id in :inclList";        TypedQuery<DealInfo> query = em.createQuery(queryStr, DealInfo.class);        query.setParameter("inclList", dealIds);        return query.getResultList();    }

Works for me with JPA 2, Jboss 7.0.2