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.