Kryteria API definiuje function expression
do wykonywania natywnych funkcji SQL w CriteriaBuilder
interfejs w następujący sposób:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
gdzie name
to nazwa funkcji SQL, type
jest oczekiwanym typem zwracanym i args
jest zmienną listą argumentów (jeśli istnieje).
Oto przykład, jak go użyć w zapytaniu kryterialnym:
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();
gdzie
RadExamTimes
:hipotetyczna jednostka głównaMM/DD/YYYY
:format specyficzny dla bazy danych (w tym przykładzie format daty Postgresql; dla Oracle użyj formatu Ora itp.)to_char
:Funkcja Postgresql do konwersji wartości daty na ciągbegin_exam
:pole daty do sformatowania
Ciąg formatu nie może być przekazany tak, jak jest, więc literal()
metoda jest używana do jej owinięcia.
Uwaga:Powyższy przykład jest testowany na bazie danych MySQL z funkcją MySQL i odpowiednim formatem daty; ale przykład został zmieniony, aby pasował do składni Postgresql.