Criteria API definerer function expression til at udføre native SQL-funktioner i CriteriaBuilder interface som følger:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
hvor name er navnet på SQL-funktionen, type er den forventede returtype og args er en variabel liste over argumenter (hvis nogen).
Her er et eksempel på, hvordan du bruger det i en kriterieforespørgsel:
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();
hvor
RadExamTimes:en hypotetisk rodentitetMM/DD/YYYY:et databasespecifikt format (i dette eksempel Postgresql-datoformat; for Oracle brug Ora-format osv.)to_char:Postgresql-funktion til at konvertere datoværdi til strengbegin_exam:datofeltet, der skal formateres
Formatstrengen kan ikke sendes som den er, så literal() metoden bruges til at pakke den ind.
Bemærk:Ovenstående eksempel er testet på MySQL-database med MySQL-funktion og tilsvarende datoformat; men eksemplet blev ændret til at matche Postgresql-syntaksen.