Liferay 7.2. Service Layer - Consultas personalizadas
Hasta el momento hemos creado consultas simples, como listar todos los registros con un campo u otro campo iguales.
Pero necesitamos que nuestros registros puedan ser leídos con cualquier combinación de los cambios.
El Service Layer nos cubre grandes funcionalidades con las características básicas del CRUD. Además, podemos agregar otros tipos de consultas. Estos tipos de consulta se llama
La implementación es bastante simple, y se hace en la clase --LocalServiceImpl
Luce muy parecido al API de JPA 2.x: creando una consulta, y agregando las condiciones a medida que se van encontrando.
Usar un API así para crear las consultas considero que es la mejor manera, y así evitar construir una cadena SQL con todos los parámetros "dinámicos" que hasta puede causar confusión.
NO OLVIDAR: Hacer build service y refresh project para que surtan efectos los cambios.
Pero necesitamos que nuestros registros puedan ser leídos con cualquier combinación de los cambios.
El Service Layer nos cubre grandes funcionalidades con las características básicas del CRUD. Además, podemos agregar otros tipos de consultas. Estos tipos de consulta se llama
DynamicQuery
, y es lo que veremos en este post.La implementación es bastante simple, y se hace en la clase --LocalServiceImpl
//... public List<Course> findByKeywords(long groupId,String keywords, int start, int end, OrderByComparator<Course> orderByComparator){ DynamicQuery query = dynamicQuery() //crea la consulta... .add(RestrictionsFactoryUtil.eq("groupId", groupId)); // que groupId = al parametro... if (Validator.isNotNull(keywords)) { Junction disjunction = RestrictionsFactoryUtil.disjunction() //crea el OR... .add( RestrictionsFactoryUtil.like("name",'%'+ keywords+'%') //... con name como el keyword... ).add( RestrictionsFactoryUtil.like("description",'%'+ keywords+'%') //... o en description ); query.add(disjunction); //... y lo agrega al AND del where. } return dynamicQuery(query, start, end, orderByComparator); //... termina ejecutando toda la consulta }
Luce muy parecido al API de JPA 2.x: creando una consulta, y agregando las condiciones a medida que se van encontrando.
Usar un API así para crear las consultas considero que es la mejor manera, y así evitar construir una cadena SQL con todos los parámetros "dinámicos" que hasta puede causar confusión.
NO OLVIDAR: Hacer build service y refresh project para que surtan efectos los cambios.
تعليقات
إرسال تعليق
Si quieres hacer una pregunta más específica, hazla en los foros que tenemos habilitados en Google Groups
Ah! solo se permiten comentarios de usuarios registrados. Si tienes OpenID, bienvenido! Puedes obtener su OpenID, aquí: http://openid.net/