Ich versuche, eine Liste von Enums in meine Hibernate-Abfrage zu übergeben. Hier ist, was ich versuche zu tun:Kann die Liste der Enums nicht in Hibernate Query übergeben?
public Integer getReportRunsCount(Set<ReportRunStatus> statusSet, Optional<String> userId) {
Query query = sessionFactory.getCurrentSession().createQuery("select count(1) from ReportRun r where r.status in (:fieldStatuses) and r.createdBy = :userId");
query.setParameterList("fieldStatuses", Arrays.asList(statusSet));
query.setString("userId", userId.orElse(null));
return Ints.checkedCast((Long)query.uniqueResult());
}
ReportRunStatus.java:
public enum ReportRunStatus {
STARTED,
QUERYDATA,
PROCESSINGDATA,
COMPLETED,
CANCELLED,
ERROR;
}
ich gerade versucht, in diesen fieldStatuses
als Parameter zu übergeben, wo ReportRunStatus
ist eine Klasse von Aufzählungen. Aber ich bekomme immer wieder diese Fehlermeldung, dass
java.lang.ClassCastException: java.util.HashSet cannot be cast to java.lang.Enum
Irgendwelche Ideen, warum dies passieren könnte? Ich sah diesen Link hier: using enum list as parameter in HQL query als Referenz zu tun, was ich versuche zu tun, aber ich bekomme den Fehler oben. Jede Hilfe wäre willkommen. Vielen Dank!
Nein, Sie müssen es nicht in String konvertieren, vorausgesetzt, das Mapping ist korrekt für eine Enumeration –