A API de critérios define a
function expression
para executar funções SQL nativas no CriteriaBuilder
interface da seguinte forma:Função
<T> Expression<T> function(String name, Class<T> type, Expression<?>... args);
onde
name
é o nome da função SQL, type
é o tipo de retorno esperado e args
é uma lista variável de argumentos (se houver). Aqui está um exemplo de como usá-lo em uma consulta de critérios:
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();
Onde
RadExamTimes
:uma entidade raiz hipotéticaMM/DD/YYYY
:um formato específico do banco de dados (neste exemplo, formato de data Postgresql; para Oracle, use o formato Ora, etc)to_char
:Função Postgresql para converter valor de data em stringbegin_exam
:o campo de data a ser formatado
A string de formato não pode ser passada como está para que o
literal()
é usado para envolvê-lo. Nota:O exemplo acima é testado em banco de dados MySQL com função MySQL e formato de data correspondente; mas o exemplo mudou para corresponder à sintaxe do Postgresql.