En la siguiente consulta de la APP, los: fcIds nombre del parámetro debe ser una lista de valores enteros:de lista como un parámetro llamado en consulta JPA utilizando TopLink
@NamedQuery(name = "SortTypeNWD.findByFcIds", query = "SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds)")
Como es lógico, esto es lo que se hace cuando el consulta con nombre se llama:
Query findByDatesPlFcIds = em.createNamedQuery("SortTypeNWD.findByFcIds");
findByDatesPlFcIds.setParameter("fcIds", fcIds);
Donde las variables fcIds es un ArrayList que contiene números enteros.
Todo el código anterior funciona bien con Hibernate, pero no lo hace con TopLink:
Caused by: java.lang.IllegalArgumentException: You have attempted to set a value of type class java.util.ArrayList for parameter fcIds with expected type of int from query string SELECT s FROM SortTypeNWD s WHERE s.sortTypeNWDPK.fcId IN (:fcIds).
¿Hay una solución para utilizar una lista como un parámetro denominado en TopLink? ¿Se puede forzar el tipo del parámetro nombrado?
¿Quién tiene la brillante idea de incluir esto en Consultas con nombre y no en NativeNamedQueries? Estuve buscando durante dos horas tratando de descubrir por qué mi consulta no funcionaría. – SoftwareSavant