Sto utilizzando la query JPQL per verificare se l'elenco contiene i valori enum specificati. Se il valore enum è un singolo elemento da verificare, allora è piuttosto semplice.jpql IN query con valore enum
In espressione di query,
query = "... where s.status = :status";
e quindi impostare parametri come
query.setParameter("status", statusValue);
ma voglio controllare qualcosa come qui di seguito
query = "... where s.status IN (:statusList)";
dove statusList
è una stringa di numeri (ad es. "0,1,2" che significa la l ist dei valori di stato)
Ma non riesco a trovare una soluzione. Ho anche controllato con s.status.ordinal() IN (statusList)
nella query ma senza fortuna.
sto usando JPA Implementazione: EclipseLink (JPA 2.0) nome effettivo
mio dell'Ente è SType
public enum SType
{
REQUISITION,
PURCHASE,
FINISHED,
// others
RETURN;
}
DOMANDA:
String querySt = "select s.slipType.slipNameSt,s.slipNumberSt, s.idNr from Slip s
where s.slipType.sType IN (:enumTypeListt)";
em.createQuery(querySt).setParameter("enumTypeList", EnumSet.of(SType.REQUISITION,
SType.PURCHASE));
Il tuo valore ordinale in contrapposizione alla stringa? –
@KevinBowersox: Sì, nel database, ho memorizzato i valori ordinali e nel front-end, Enum rappresenta quel valore. – sarwar026
Si consiglia di memorizzare la stringa effettiva dell'enumerazione nel database. Se il tuo enum dovesse cambiare, potrebbe essere necessario eseguire alcune modifiche ai dati nel tuo database. –