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.