Criteria API definiert function expression
um native SQL-Funktionen im CriteriaBuilder
auszuführen Schnittstelle wie folgt:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
wobei name
ist der Name der SQL-Funktion, type
ist der erwartete Rückgabetyp und args
ist eine variable Liste von Argumenten (falls vorhanden).
Hier ist ein Beispiel für die Verwendung in einer Kriterienabfrage:
CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery cq = cb.createQuery(String.class);
Root<RadExamTimes> root = cq.from(RadExamTimes.class);
cq.select( cb.function("to_char", String.class, root.get("begin_exam"), cb.literal("MM/DD/YYYY")));
TypedQuery<String> query = entityManager.createQuery(cq);
List<String> result = query.getResultList();
wo
RadExamTimes
:eine hypothetische Root-EntitätMM/DD/YYYY
:ein datenbankspezifisches Format (in diesem Beispiel Postgresql-Datumsformat; für Oracle verwenden Sie das Ora-Format usw.)to_char
:Postgresql-Funktion zum Konvertieren des Datumswerts in einen Stringbegin_exam
:das zu formatierende Datumsfeld
Der Formatstring kann nicht unverändert übergeben werden, sodass literal()
Methode wird verwendet, um es zu umschließen.
Hinweis:Das obige Beispiel wurde auf einer MySQL-Datenbank mit MySQL-Funktion und entsprechendem Datumsformat getestet; aber das Beispiel wurde geändert, um der Postgresql-Syntax zu entsprechen.