Código:
<p:dataTable id="paises" var="pais" value="#{paisBean.lazyModel}"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} "
paginator="true" rows="10" style="margin-bottom:20px"
rowKey="#{pais.id}"
selection="#{paisBean.pais}"
lazy="true"
selectionMode="single" >
<p:column headerText="Id" width="100" filterBy="#{pais.id}" filterMatchMode="contains">
<h:outputText value="#{pais.id}" style="font-size:12px" />
</p:column>
<p:column headerText="Nombre" filterBy="#{pais.nombre}" filterMatchMode="contains">
<h:outputText value="#{pais.nombre}" style="font-size:12px" />
</p:column>
<p:column headerText="Estado" filterBy="#{pais.estado}" filterMatchMode="contains">
<h:outputText value="#{pais.estado}" style="font-size:12px" />
</p:column>
<p:column width="30" exportable="false">
<p:commandButton icon="ui-icon-search" style="width:20px;height:20px" update=":form:display" oncomplete="PF('paisDialog').show()" />
</p:column>
<p:column width="30" exportable="false">
<p:commandButton icon="ui-icon-trash" style="width:20px;height:20px"/>
</p:column>
<p:column width="30" exportable="false">
<p:commandButton icon="ui-icon-refresh" style="width:20px;height:20px" />
</p:column>
</p:dataTable>
Código:
package com.ricardo.bean;
import com.ricardo.daos.PaisDAO;
import com.ricardo.daos.PaisDAOInterface;
import com.ricardo.daos.UsuarioDAO;
import com.ricardo.models.Pais;
import com.ricardo.models.Usuario;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import org.primefaces.model.LazyDataModel;
import org.primefaces.model.SortOrder;
@ManagedBean
@ViewScoped
public class PaisBean implements Serializable {
public Pais pais = new Pais();
public PaisDAO pDAO = new PaisDAO();
/*LAZY */
private LazyDataModel<Pais> lazyModel;
@PostConstruct
public void init() {
lazyModel = new LazyDataModel() {
public List<Pais> load(int first, int pageSize, String sortField, boolean sortOrder, Map filters) {
List<Pais> list = pDAO.getFindPais(first, first + pageSize);
return list;
}
};
lazyModel.setRowCount(pDAO.getTotalPaises());
}
public LazyDataModel<Pais> getLazyModel() {
return lazyModel;
}
public void setpDAO(PaisDAO pDAO) {
this.pDAO = pDAO;
}
}
Código:
package com.ricardo.daos;
import com.ricardo.models.Pais;
import com.ricardo.models.Usuario;
import com.utilerias.HibernateUtil;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
public class PaisDAO{
public int getTotalPaises() {
SessionFactory sf = HibernateUtil.getSessionFactory();
Session sesion = sf.openSession();
String hql = "select count(*) from Pais";
Query query = sesion.createQuery(hql);
return ((Number) query.uniqueResult()).intValue();
}
public List<Pais> getFindPais(final int firstRow, final int max){
SessionFactory sf = HibernateUtil.getSessionFactory();
Session sesion = sf.openSession();
String hql = "from Pais";
Query query = sesion.createQuery(hql);
query.setFirstResult(firstRow);
query.setMaxResults(max);
List<Pais> lista = query.list();
return lista;
}}
Código:
package com.ricardo.models;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
@Entity
public class Pais {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
private int id;
private String nombre;
private String estado;
@OneToMany(mappedBy="pais")
private List<Ciudad> ciudad = new ArrayList<Ciudad>();
public List<Ciudad> getCiudad() {
return ciudad;
}
public void setCiudad(List<Ciudad> ciudad) {
this.ciudad = ciudad;
}
public Pais(int id, String nombre, String estado) {
this.id = id;
this.nombre = nombre;
this.estado = estado;
}
public Pais(){
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
}
Dejo detalle del error:
Grave: Error Rendering View[/sistema/pais.xhtml]
java.lang.UnsupportedOperationException: Lazy loading is not implemented.