Dynamic Query en Liferay

De Dos Ideas.
Revisión del 17:41 18 jul 2013 de Parivero (discusión | contribuciones) (Página creada con 'Liferay, a partir de la versión 5.1, proporcionar acceso a la API de consulta dinámica de Hibernate. Esto permite realizar consultas complejas sobre las estructuras o lista di…')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

Liferay, a partir de la versión 5.1, proporcionar acceso a la API de consulta dinámica de Hibernate. Esto permite realizar consultas complejas sobre las estructuras o lista dinámicas que existan en el portal.

Dynamic Query + Velocity

En este ejemplo se muestra como implementar las consultas dinámicas en un Template de una Lista dinámica. La consulta obtiene los 20 primeros registros del usuario registrado ordenados por fecha.

    1. Obtiene el userId.
  1. set($userId = $request.get("theme-display").get("user-id"))
    1. Obtiene el servicio para ejecutar las consultas dinamicas.
  1. set ($ddlLocalService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))
    1. Obtiene el id de la lista.
  1. set ($recordSetId = $getterUtil.getLong($reserved_record_set_id.data, 0))
    1. Obtiene el tipo de respuesta para la consulta dinamica.
  1. set ($DDLrecordClass = $portal.getClass().forName("com.liferay.portlet.dynamicdatalists.model.DDLRecord"))
    1. Utilidad para armar consultas dinamicas.
  1. set ($dqfu = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"))
    1. Utilidad para agregar ordenamiento a la consulta dinamica.
  1. set ($ofu = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.OrderFactoryUtil"))
    1. Restricciones
  1. set ($rfu = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil"))
    1. Query
  1. set ($q = $dqfu.forClass($DDLrecordClass))
  2. set ($V = $q.add($rfu.eq("recordSetId", $getterUtil.getLong($recordSetId))))
  3. set ($V = $q.add($rfu.eq("userId", $getterUtil.getLong($userId))))
  4. set ($V = $q.addOrder($ofu.asc("modifiedDate")))
  5. set ($records = $ddlLocalService.dynamicQuery($q,0,20))
  1. foreach($record in $records)
   #set ($titulo = $record.getField("Titulo").getValue())
   #set ($link = $record.getField("Link").getValue())
   
       <a href="$link">$titulo</a> 
  1. end


Ver Tambien