Używam zapytania JPQL do sprawdzenia, czy lista zawiera określone wartości wyliczeniowe. Jeśli wartość wyliczeniowa jest pojedynczym elementem do sprawdzenia, jest to bardzo proste.jpql W zapytaniu z wartością wyliczeniową
W wyrażeniu kwerendy,
query = "... where s.status = :status";
a następnie ustawić parametr jak
query.setParameter("status", statusValue);
Ale chcę coś sprawdzić jak poniżej
query = "... where s.status IN (:statusList)";
gdzie statusList
jest ciągiem liczby (np. "0,1,2", co oznacza, że l ist wartości wartości)
Ale nie mogę znaleźć rozwiązania. Sprawdziłem również w zapytaniu s.status.ordinal() IN (statusList)
, ale bez powodzenia.
Używam WZP realizacji: EclipseLink (JPA 2.0) rzeczywista nazwa
podmiot, jest SType
public enum SType
{
REQUISITION,
PURCHASE,
FINISHED,
// others
RETURN;
}
zapytanie:
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));
Twoje zachowanie wartości porządkowej w przeciwieństwie do ciągu? –
@KevinBowersox: Tak, w bazie danych zapisałem wartości porządkowe, aw interfejsie użytkownika, Enum reprezentuje tę wartość. – sarwar026
Zaleciłbym przechowywanie rzeczywistego ciągu wyliczeniowego w bazie danych. Jeśli Twoje wyliczenie kiedykolwiek się zmieni, być może będziesz musiał przeprowadzić korektę danych w swojej bazie danych. –