@SuppressWarnings("unchecked")
public List<Cidade> buscaPorCidadeEstado(String nomeCidade,
Long codigoEstadoCidade) {
ArrayList<Cidade> listaRetorno = new ArrayList<Cidade>();
try {
Session sessao = HibernateUtil.getSessionFactory().openSession();
Criteria criteria = sessao.createCriteria(Cidade.class);
if (!nomeCidade.isEmpty()) {
criteria
.add(Restrictions.ilike("nome", "%" + nomeCidade + "%"));
}
if ((codigoEstadoCidade != null) || (codigoEstadoCidade != 0)) {
criteria.createAlias("estado", "estado");
criteria.add(Restrictions.eq("estado", codigoEstadoCidade));
}
criteria.addOrder(Order.asc("nome"));
listaRetorno = (ArrayList<Cidade>) criteria.list();
} catch (Exception e) {
}
return listaRetorno;
}
O método que passo é:
public String pesquisar() {
try {
CidadeDAO cidadeDAO = new CidadeDAO();
this.listaPesquisaCidade = cidadeDAO.buscaPorCidadeEstado(this.pesquisaCidadeNome, this.cidadeCodigoEstado);
} catch (Exception e) {
JSFUtil.addInfoMessage(Mensagens.erroPesquisarCidadeEstado);
}
return null;
}
Na tela estou mostrando assim:
<rich:dataTable id="listaCidadePesquisar"
value="#{cidadeBacking.listaPesquisaCidade}" var="cidade" width="100%">
<f:facet name="caption">
<h:outputText value="Lista de Cidades" />
</f:facet>
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Código" />
</rich:column>
<rich:column>
<h:outputText value="Cidade" />
</rich:column>
<rich:column>
<h:outputText value="Estado" />
</rich:column>
<rich:column>
<h:outputText value="Pais" />
</rich:column>
<rich:column colspan="2">
<h:outputText value="Acoes" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{cidade.codigo}" />
</rich:column>
<rich:column>
<h:outputText value="#{cidade.nome}" />
</rich:column>
<rich:column>
<h:outputText value="#{cidade.estado.nome}" />
</rich:column>
<rich:column>
<h:outputText value="#{cidade.estado.pais.nome}" />
</rich:column>
<rich:column>
<h:commandLink value="Alterar"
action="#{cidadeBacking.preparaAlteracao}">
<f:setPropertyActionListener value="#{cidade}"
target="#{cidadeBacking.cidadeSelecionada}" />
</h:commandLink>
</rich:column>
<rich:column>
<a4j:commandLink value="Excluir" action="#"
onclick="Richfaces.showModalPanel('modalExcluirCidade')">
<f:setPropertyActionListener value="#{cidade}"
target="#{cidadeBacking.cidadeSelecionada}" />
</a4j:commandLink>
</rich:column>
</rich:dataTable>
Acredito que não seja problema na tela pois se passo uma lista de um outro método exibe normalmente, e se passo this.listaPesquisaCidade = cidadeDAO.buscaPorCidadeEstado(this.pesquisaCidadeNome, null);
Também funciona.
Se alguem puder ajudar agradeço.