Domanda

Come posso utilizzare IN al mio 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)")),  
 }

Voglio dire che posso impostare il parametro 'tipo' (ho definito come una variabile ---->: tipo) e voglio definire le variabili all'interno di IN dichiarazione. Tuttavia il numero di parametri non sono costanti. Voglio definire un array o qualcosa del genere:. Array [] e voglio metterlo quando chiamo che namedQuery

È stato utile?

Soluzione

NamedQuery

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

Imposta parametri

Sospensione :

query.setParameterList('availableCollection', yourCollection);

JPA :

query.setParameter('availableCollection', yourCollection);

Altri suggerimenti

Hai provato qualcosa di simile

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

(se "disponibile" è una stringa)

o

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

(se disponibile è un numero)?

L'espressione 'IN' in JPQL è uguale alla scrittura multipla 'O' dichiarazioni, nel tuo caso un esempio di 'IN' sarebbe:

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

che credo sia pari a:

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

Ecco un link che spiega bene: OpenJPA: nell'espressione

Modifica Post scriptum Supponendo p.available è String (tipo di carattere)

EDIT2 L'autore ha curato domanda così tante volte che non riesco a seguire lui :) Per quanto riguarda la questione reale circa passando array per IN-espressione, ecco un link di domanda simile su StackOverflow: JPQL iN clausola - Array

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top