liferay
Usando consultas SQL dinámicas y personalizadas en Liferay
Buscar..
Introducción
Hay situaciones cuando se trata de la capa de servicio en el ciclo de vida útil, cuando necesitamos consultar la base de datos con demasiadas cláusulas o tratar con varias tablas. En tales casos, usamos cualquiera de los siguientes:
1) Consulta dinámica (envoltura en la API de criterios de hibernación)
2) consultas SQL personalizadas
Observaciones
Referencias:
Usando la consulta dinámica en Liferay
Para la mayoría de los escenarios que involucran entidades de la capa de servicio, podemos conformarnos con las llamadas de servicio predeterminadas, también con la ayuda de los buscadores. Para escenarios simples que involucran múltiples entidades, avanzamos hacia el uso de la API de consulta dinámica. Esta es una API de contenedor. para la API de criterios utilizada en Hibernate. Puede usarse para casos en los que necesitamos generar consultas dinámicas, que no son de naturaleza muy compleja, utilizando varias construcciones de la API. Para empezar, algunas de las construcciones más utilizadas son: DynamicQueryFactoryUtil para construir consultas
RestrictionsFactoryUtil utiliza para proporcionar restricciones en los campos de comparación con un determinado valor para reducir los resultados que coinciden con un determinado valor o dentro de un rango, etc.
ProjectionFactoryUtil utiliza para proporcionar proyecciones para obtener campos que formarán parte del resultado de la búsqueda, es decir, en lugar de proporcionar la entidad completa, proporcionará solo ciertos campos o aplicará la función de agregación (como min.max, avg) en el mismo.
PropertyFactoryUtil utiliza para la comparación de algunas propiedades de la clase de entidad para realizar mayormente comparsion con otros campos de una consulta
La implementación de estas clases está presente en el paquete dao.orm.jpa con todos los métodos disponibles.