Criteria API definierar function expression för att köra inbyggda SQL-funktioner i CriteriaBuilder gränssnitt enligt följande:
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
där name är namnet på SQL-funktionen, type är den förväntade returtypen och args är en variabel lista med argument (om några).
Här är ett exempel på hur du använder det i en kriteriefråga:
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();
var
RadExamTimes:en hypotetisk rotentitetMM/DD/YYYY:ett databasspecifikt format (i detta exempel Postgresql-datumformat; för Oracle använd Ora-format, etc)to_char:Postgresql-funktion för att konvertera datumvärde till strängbegin_exam:datumfältet som ska formateras
Formatsträngen kan inte skickas som den är så att literal() metod används för att slå in den.
Obs:Ovanstående exempel är testat på MySQL-databas med MySQL-funktion och motsvarande datumformat; men exemplet ändrades för att matcha Postgresql-syntaxen.