Diferencia entre revisiones de «Dynamic Query en Liferay»

De Dos Ideas.
Saltar a: navegación, buscar
(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…')
 
 
(No se muestran 5 ediciones intermedias de otro usuario)
Línea 2: Línea 2:
  
 
== Dynamic Query + Velocity ==
 
== Dynamic Query + Velocity ==
En este ejemplo se muestra como implementar las consultas dinámicas en un Template de una [http://www.liferay.com/es/documentation/liferay-portal/6.1/user-guide/-/ai/creating-data-lists Lista dinámica]. La consulta obtiene los 20 primeros registros del usuario registrado ordenados por fecha.
+
En este ejemplo se muestra como implementar las consultas dinámicas en un Template de una [http://www.liferay.com/es/documentation/liferay-portal/6.1/user-guide/-/ai/creating-data-lists Lista dinámica]. La consulta obtiene los 20 primeros registros del usuario registrado ordenados de forma descendentepor fecha de modificación.
  
 
<code>
 
<code>
Línea 30: Línea 30:
 
#set ($V = $q.add($rfu.eq("recordSetId", $getterUtil.getLong($recordSetId))))   
 
#set ($V = $q.add($rfu.eq("recordSetId", $getterUtil.getLong($recordSetId))))   
 
#set ($V = $q.add($rfu.eq("userId", $getterUtil.getLong($userId))))   
 
#set ($V = $q.add($rfu.eq("userId", $getterUtil.getLong($userId))))   
#set ($V = $q.addOrder($ofu.asc("modifiedDate")))   
+
#set ($V = $q.addOrder($ofu.desc("modifiedDate")))   
 
#set ($records = $ddlLocalService.dynamicQuery($q,0,20))   
 
#set ($records = $ddlLocalService.dynamicQuery($q,0,20))   
  
Línea 44: Línea 44:
 
</code>
 
</code>
  
 +
== Dynamic Query para obtener una lista dinámica por nombre en un VM ==
 +
En este ejemplo se muestra como realizar una consulta para obtener la lista por el nombre que tenga en algun idioma. Es decir, si nuestra lista dinamica se llama "ListaDinamica" en español y "DynamicList" en inglés (debido a que el campo del nombre es internacionalizable) podremos encontrarlo por ambos.
 +
<code>
 +
#set ($nombreListaDinamicaABuscar = "UnNombre"))
 +
 +
#set ($ddlRecordService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))
 +
 +
#set ($ddlRecordSetService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordSetLocalService'))
 +
 +
## Obtiene el tipo de respuesta para la consulta dinamica.
 +
#set ($DDLrecordSetClass = $portal.getClass().forName("com.liferay.portlet.dynamicdatalists.model.DDLRecordSet"))
 +
 +
##Utilidad para armar consultas dinamicas.
 +
#set ($dynamicQueryFactoryUtil = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"))
 +
 
 +
##Restricciones
 +
#set ($restrictionsFactoryUtil = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil")) 
 +
 +
##Armamos el nombre de la lista considerando que en liferay se encuentra dentro de un xml.
 +
#set($nombre = "%>$nombreListaDinamicaABuscar<%")
 +
 +
##Query lista dinamica
 +
#set ($queryBusquedaListaDinamica = $dynamicQueryFactoryUtil.forClass($DDLrecordSetClass)) 
 +
#set ($V = $queryBusquedaListaDinamica.add($restrictionsFactoryUtil.like("name", $nombre)))
 +
#set ($resultadoListas = $ddlRecordSetService.dynamicQuery($queryBusquedaListaDinamica))
 +
 +
##Asumimos que hay una sola lista con este nombre
 +
#set ($listaActual = $resultadoListas.get(0))
 +
#set ($recordSetIdActual = $listaActual.recordSetId)
 +
 +
##Query registros lista
 +
#set($registrosLista = $ddlRecordService.getRecords($recordSetIdActual))
 +
 +
</code>
  
 
== Ver Tambien ==
 
== Ver Tambien ==
  
 
* [http://www.liferay.com/es/community/wiki/-/wiki/Main/Queries+2%3A+DynamicQuery+API Wiki Liferay]
 
* [http://www.liferay.com/es/community/wiki/-/wiki/Main/Queries+2%3A+DynamicQuery+API Wiki Liferay]
 +
 +
[[Category:Liferay Dynammic_Query]]

Revisión actual del 21:01 14 nov 2013

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 de forma descendentepor fecha de modificación.

    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.desc("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

Dynamic Query para obtener una lista dinámica por nombre en un VM

En este ejemplo se muestra como realizar una consulta para obtener la lista por el nombre que tenga en algun idioma. Es decir, si nuestra lista dinamica se llama "ListaDinamica" en español y "DynamicList" en inglés (debido a que el campo del nombre es internacionalizable) podremos encontrarlo por ambos.

  1. set ($nombreListaDinamicaABuscar = "UnNombre"))
  1. set ($ddlRecordService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordLocalService'))
  1. set ($ddlRecordSetService = $serviceLocator.findService('com.liferay.portlet.dynamicdatalists.service.DDLRecordSetLocalService'))
    1. Obtiene el tipo de respuesta para la consulta dinamica.
  1. set ($DDLrecordSetClass = $portal.getClass().forName("com.liferay.portlet.dynamicdatalists.model.DDLRecordSet"))
    1. Utilidad para armar consultas dinamicas.
  1. set ($dynamicQueryFactoryUtil = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.DynamicQueryFactoryUtil"))
    1. Restricciones
  1. set ($restrictionsFactoryUtil = $portal.getClass().forName("com.liferay.portal.kernel.dao.orm.RestrictionsFactoryUtil"))
    1. Armamos el nombre de la lista considerando que en liferay se encuentra dentro de un xml.
  1. set($nombre = "%>$nombreListaDinamicaABuscar<%")
    1. Query lista dinamica
  1. set ($queryBusquedaListaDinamica = $dynamicQueryFactoryUtil.forClass($DDLrecordSetClass))
  2. set ($V = $queryBusquedaListaDinamica.add($restrictionsFactoryUtil.like("name", $nombre)))
  3. set ($resultadoListas = $ddlRecordSetService.dynamicQuery($queryBusquedaListaDinamica))
    1. Asumimos que hay una sola lista con este nombre
  1. set ($listaActual = $resultadoListas.get(0))
  2. set ($recordSetIdActual = $listaActual.recordSetId)
    1. Query registros lista
  1. set($registrosLista = $ddlRecordService.getRecords($recordSetIdActual))

Ver Tambien