Mostrando entradas con la etiqueta Criteria. Mostrar todas las entradas
Mostrando entradas con la etiqueta Criteria. Mostrar todas las entradas

lunes, 29 de octubre de 2018

Criteria Case

Para hacer un CASE deSQL en Criteria, utilizamos lo siguiente:

builderSub.selectCase().when(builderSub.equal(rootEntitySub.get("estadisticasPortabilidadId").get("tipoMensaje").get("codigo"), "SP"), rootEntitySub.get("cantidad")).otherwise(0)

Que equivale a:

CASE tipo_mensaje WHEN 'SP' THEN cantidad ELSE 0 END

domingo, 28 de octubre de 2018

Criteria Trunc Date

Para hacer un trunc de una fecha (agrupar fechas por día ('DD'), semana ('WW'), mes ('MM'), o año ('YY')) en SQL sería:

Trunc(fecha, 'MM') AS fecha

Y en Criteria sería:

builder.function("TRUNC", Date.class, rootEntity.get("fecha"), builder.literal("MM"))

sábado, 27 de octubre de 2018

Etiqueta @Formula en Entidades Hibernate y uso en Criteria

La etiqueta @Formula permite asignar una fórmula a un atributo de una entidad para que se aplique en caso de seleccionarla en alguna consulta.
Por ejemplo, tengo una entidad con un atributo "fecha" mapeado con el campo "FECHA" de la tabla de base de datos. Tengo que poder realizar una consulta a base de datos agrupando las fechas de los registros por días, semanas, meses o años dependiendo de un filtro que marcará el usuario.
En principio es tan simple como utilizar la función "TRUNC" de SQL en la consulta para que me agrupe las fechas, pero también podemos declarar el "TRUNC" en la entidad a través de la etiqueta @Formula, utilizando atributos adicionales no mapeados con ningún campo de la base de datos.