I have tried to apply this solution to my own code: This is the namedQuery I have placed on the entity: @NamedQuery(name="listDocumentTypesByCategories", query="SELECT dt FROM DocumentType dt, DocumentTypeCategoryLink dtcl " + "WHERE dt.documentTypeID = dtcl.documentType.documentTypeID " + "AND dtcl.documentCategory.documentCategoryID IN (:catIDs) " + "AND dt.invalid = 'false' " + "ORDER BY dt.name ASC")
This is how I am executing setting up/executing query following the instructions posted in this forum: Query q = em.createNamedQuery("listDocumentTypesByCategories"); q.setParameter("catIDs", Arrays.asList(new int[]{1,2,3})); List<DocumentType> objList = (List<DocumentType>)q.getResultList(); This is the error I am receiving upon execution: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.Arrays$ArrayList for parameter catIDs with expected type of int from query string SELECT dt FROM DocumentType dt, DocumentTypeCategoryLink dtcl WHERE dt.documentTypeID = dtcl.documentType.documentTypeID AND dtcl.documentCategory.documentCategoryID IN (:catIDs) AND dt.invalid = 'false' ORDER BY dt.name ASC The query works fine if I just pass in a single int value, instead of trying an array of int values? Any help on this would be greatly appreciated. On Tue, Aug 12, 2008 at 1:53 AM, Pinaki Poddar <[EMAIL PROTECTED]> wrote: > > Hi, >> q.setParameter("roleIds", sb.toString()); > > Set the IN parameter not as a String but a List<T> where T is the type of > Role.id. > > For example, if Role.id is int, then > q.setParameter("roleIds", Arrays.asList(new int[]{1,2})); > > > -- > View this message in context: > http://n2.nabble.com/-JPQL--Problem-statement-SELECT-...-IN-%28%29-%2C-with-parameters-tp686295p686459.html > Sent from the OpenJPA Users mailing list archive at Nabble.com. > > -- View this message in context: http://n2.nabble.com/-JPQL--Problem-statement-SELECT-...-IN-%28%29-%2C-with-parameters-tp686295p839238.html Sent from the OpenJPA Users mailing list archive at Nabble.com.