Bom galera, estou desenvolvendo um sistema em JSF com PrimeFaces e estou usando o Hibernate com JPA2, quero fazer uma consulta usando o critéria e não estou conseguindo.
Aparece um Erro: Segue meu código.
*Minha Interface:
`package repository;
import java.util.Date;
import java.util.List;
import model.Funcionario;
import model.Servico;
public interface Servicos {
public List<Servico> listar();
public List<Servico> filtrarServico(Date dataInicio,Date dataFim);
}
`
Meu DAO
`package repository.DAO;
import java.util.Date;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;
import model.Funcionario;
import model.Servico;
import repository.Servicos;
/**
- Classe que implementa a Interface Serviços.
- @author dayson
*/
public class ServicoDAO implements Servicos {
private Session session;
public ServicoDAO(Session session) {
this.session = session;
}
@SuppressWarnings("unchecked")
@Override
public List<Servico> filtrarServico(Date dataInicio, Date dataFim) {
return session.createCriteria(Servico.class)
.add(Restrictions.between("data", dataInicio, dataFim)).list();
}
}
`
Minha Regra de Negócio
OBS: Servico <- é minha classe com meus Getters e Setters.
`package service;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import model.Servico;
import repository.Servicos;
/**
- Classe, regra de negócio de Serviço
- @author dayson
*/
public class GestaoServicos {
private Servicos servicos;
private List<Servico> listaServico = new ArrayList<Servico>();
public GestaoServicos(Servicos servicos) {
this.servicos = servicos;
}
public List<Servico> filtrarServico( Date dataInicio,Date dataFim)throws RegraNegocioException{
try{
return listaServico = servicos.filtrarServico(dataInicio,dataFim);
}
catch(Exception e){
throw new RegraNegocioException("Não foi possível Pesquisar");
}
}
public List<Servico> getListaServico() {
return listaServico;
}
}
`
Meu Bean
`package view;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import model.Servico;
import repository.Servicos;
import service.GestaoServicos;
import service.RegraNegocioException;
import util.MensagemUtil;
import util.Repositorios;
/**
- Classe para consultar Serviço e exclui serviço.
- @author dayson
*/
@ManagedBean
@ViewScoped
public class ConsultaServico implements Serializable {
/**
*
*/
private static final long serialVersionUID = 1L;
private List<Servico> listServico = new ArrayList<Servico>();
private Repositorios repositorio = new Repositorios();
private Servico servicoSelecionado;
private Date dataInicio;
private Date dataFim;
GestaoServicos gestaoServicos = new GestaoServicos(repositorio.getServico());
@PostConstruct
public void inicializar() {
Servicos servicos = repositorio.getServico();
listServico = servicos.listar();
}
public List<Servico> filtrarSevico(){
try {
MensagemUtil.AdicionaMensagem(FacesMessage.SEVERITY_INFO, "Serviço pesquisado");
return listServico = gestaoServicos.filtrarServico(dataInicio,dataFim);
} catch (RegraNegocioException e) {
MensagemUtil.AdicionaMensagem(FacesMessage.SEVERITY_ERROR, "Não foi possível pesquisar o serviço");
return null;
}
}
public List<Servico> getListServico() {
return listServico;
}
public Servico getServicoSelecionado() {
return servicoSelecionado;
}
public Date getDataInicio() {
return dataInicio;
}
public void setDataInicio(Date dataInicio) {
this.dataInicio = dataInicio;
}
public Date getDataFim() {
return dataFim;
}
public void setDataFim(Date dataFim) {
this.dataFim = dataFim;
}
}
`
Meu xhtml
`<ui:composition template="/template/layoutpadrao.xhtml"
xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:componentevalor="http://java.sun.com/jsf/composite/componetesStudio"
xmlns:componentedata=“http://java.sun.com/jsf/composite/componetesStudio”>
<ui:define name="titulo"> consulta serviço </ui:define>
<h:outputStylesheet library="css" name="sistema.css" />
<ui:define name="Botao">
<h:form>
<ui:include src="/template/layoutCabecalho.xhtml" />
</h:form>
</ui:define>
<ui:define name="corpo">
<h:form>
<br />
<p:growl id="messagens"/>
<br />
<p:toolbar styleClass="letra">
<p:toolbarGroup>
<p:commandButton value="Pesquisar" action="#{consultaServico.filtrarSevico()}" />
</p:toolbarGroup>
<p:toolbarGroup align="right">
<p:commandButton value="Listar todos" />
</p:toolbarGroup>
</p:toolbar>
<br/>
<p:accordionPanel>
<p:tab title="Filtrar Serviço">
<p:panelGrid columns="2">
<p:outputLabel value="Data" id="data"/>
<h:panelGroup>
<p:calendar value="#{consultaServico.dataInicio}" id="data" pattern="dd/MM/yyyy"
size="9" locale="pt" effect="fold"/>
a
<p:calendar value="#{consultaServico.dataFim} " pattern="dd/MM/yyyy" size="9"
locale="pt" effect="fold" />
</h:panelGroup>
<p:outputLabel value="Funcionario" for="func" />
<p:selectOneMenu value="#{cadastroServico.entradaServico.funcionario}"
id="func" rendered="true" label="funcionario">
<f:selectItem itemLabel="--Selecione--" noSelectionOption="true" />
<f:selectItems value="#{cadastroServico.listaFuncionario}" var="funcionario"
itemValue="#{funcionario}" itemLabel="#{funcionario.funcNome}"/>
</p:selectOneMenu>
</p:panelGrid>
</p:tab>
</p:accordionPanel>
<br/>
<p:accordionPanel>
<p:tab title="Base de Dados">
<p:dataTable border="1" value="#{consultaServico.listServico}"
var="obj" width="100%" styleClass="cabecalho"
sortMode ="multiple" paginator="true"
emptyMessage="Nenhum serviço encontrado" rows="30" id="tableservico"
rowsPerPageTemplate="30,50,60,80" paginatorPosition="top">
<f:facet name="header"> Controle de Serviços de Funcionários</f:facet>
<p:column headerText="Cliente" sortBy="#{obj.nome}" width="200">
<div style="text-align: center;">
<p:outputLabel value="#{obj.nome}" id="campo_nome" />
</div>
</p:column>
<p:column headerText="Descrição" width="30%">
<div style="text-align: center;">
<p:outputLabel value="#{obj.descricao}" id="campo_descricao"/>
</div>
</p:column>
<p:column headerText="Valor" sortBy="#{obj.valor}" width="100" >
<div style="text-align: center;">
<componentevalor:outputcurrency value="#{obj.valor}" id="campo_valor" />
</div>
</p:column>
<p:column headerText="Data" sortBy="#{obj.data}" width="17%">
<div style="text-align: center;">
<componentedata:outputData valor="#{obj.data}" id="campo_data"/>
</div>
</p:column>
<p:column headerText="Funcionario" sortBy="#{obj.funcionario.funcNome}" width="10%">
<div style="text-align: center;">
<h:outputLabel value="#{obj.funcionario.funcNome}" id="campo_funcionario"/>
</div>
</p:column>
<p:column headerText="Alterar" width="70">
<div style="text-align: center;">
<p:button outcome="cadastroservico" icon="ui-icon-pencil">
<f:param name="alteracao" value="#{obj.codigo}" />
</p:button>
</div>
</p:column>
<p:column headerText="Excluir" width="70">
<div style="text-align: center;">
<p:commandButton action="#{consultaServico.excluir()}" icon="ui-icon-trash" update="tableservico" >
<f:setPropertyActionListener value="#{obj}" target="#{consultaServico.servicoSelecionado}" />
<p:confirm header="Exclusão de Serviço" message="Deseja excluir este serviço selecionado?" icon="ui-icon-alert" />
</p:commandButton>
</div>
</p:column>
</p:dataTable>
</p:tab>
</p:accordionPanel>
<p:confirmDialog global="true">
<p:commandButton value="sim" styleClass="ui-confirmdialog-yes" icon="ui-icon-check"/>
<p:button value="não" styleClass="ui-confirmdialog-no" icon="ui-icon-close" />
</p:confirmDialog>
</h:form>
</ui:define>
</ui:composition>`
Meu Error
javax.el.PropertyNotFoundException: /consultaservicos.xhtml @47,47 value="#{consultaServico.dataInicio}": Property 'dataInicio' not found on type view.ConsultaServico at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:111) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) at javax.faces.component.UIOutput.getValue(UIOutput.java:174) at javax.faces.component.UIInput.getValue(UIInput.java:291) at org.primefaces.component.calendar.CalendarUtils.getValueAsString(CalendarUtils.java:47) at org.primefaces.component.calendar.CalendarRenderer.encodeEnd(CalendarRenderer.java:60) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at org.primefaces.component.panelgrid.PanelGridRenderer.encodeDynamicBody(PanelGridRenderer.java:131) at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableBody(PanelGridRenderer.java:102) at org.primefaces.component.panelgrid.PanelGridRenderer.encodeTableLayout(PanelGridRenderer.java:65) at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:37) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at org.primefaces.component.accordionpanel.AccordionPanelRenderer.encodeTab(AccordionPanelRenderer.java:227) at org.primefaces.component.accordionpanel.AccordionPanelRenderer.encodeTabs(AccordionPanelRenderer.java:157) at org.primefaces.component.accordionpanel.AccordionPanelRenderer.encodeMarkup(AccordionPanelRenderer.java:103) at org.primefaces.component.accordionpanel.AccordionPanelRenderer.encodeEnd(AccordionPanelRenderer.java:76) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863) at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:456) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at util.HibernateSessionFilter.doFilter(HibernateSessionFilter.java:38) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79) at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745) Caused by: javax.el.PropertyNotFoundException: Property 'dataInicio' not found on type view.ConsultaServico at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:268) at javax.el.BeanELResolver$BeanProperties.access$300(BeanELResolver.java:221) at javax.el.BeanELResolver.property(BeanELResolver.java:355) at javax.el.BeanELResolver.getValue(BeanELResolver.java:95) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at org.apache.el.parser.AstValue.getValue(AstValue.java:169) at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) ... 62 more