Pregunta

¿Cómo puedo utilizar en mi namedQuery?

@NamedQueries(  
 {   
 @NamedQuery(name = "GetAvailableProducts", query = new StringBuilder("").append("SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN ('I want to define changeable size of an array or sometinhg like that') OR p.available = :available)")),  
 }

Me refiero a que puedo ajustar el parámetro 'tipo' (la he definido como una variable ---->: Tipo) y quiero definir variables dentro de IN declaración a. Sin embargo el número de parámetros no son constantes. Quiero definir una matriz o algo por el estilo:. Array [] y quiero configurarlo cuando llamo que namedQuery

¿Fue útil?

Solución

NamedQuery

@NamedQueries(  
{   
 @NamedQuery(name = "GetAvailableProducts", query = "FROM Product p WHERE p.type= :type AND (p.available IN (:availableCollection) OR p.available = :available)",  
}

Establecer parámetros

Hibernate

query.setParameterList('availableCollection', yourCollection);

APP

query.setParameter('availableCollection', yourCollection);

Otros consejos

¿Usted intentó algo así como

SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN 
('foo', 'bar') OR p.available = :available)

(si es "disponible" es una cadena)

o

SELECT   p   FROM Product p WHERE p.type= :type AND (p.available IN 
(1, 2, 3) OR p.available = :available)

(si está disponible es un número)?

La expresión '' en JPQL es igual a la escritura múltiple 'O' declaraciones, en su caso, un ejemplo de 'IN' sería la siguiente:

... p.available IN ('US', 'GB') ...

Lo que yo creo es igual a:

... p.available = 'US' OR p.available = 'GB' ...

Aquí hay un enlace que lo explica así: OpenJPA: en la expresión

Editar PD Suponiendo p.available se String (tipo de caracteres)

Edit2 El autor ha editado pregunta tantas veces que no puedo seguir él :) En cuanto a la pregunta real acerca de pasar matriz para IN-expresión, aquí hay un enlace de pregunta similar en StackOverflow: cláusula JPQL eN - matrices

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top