Pessoal quando eu mando pesquisar por nome obtenho o seguinte erro a baixo ! quando mando pesquisar por matrícula ele acha ! logo nomes podem ter duplicidade matricula não, como resolvo isso ?
abraço. jr.

******************************Erro

============================DAO==============================
public Pessoa pesquisaPessoaByNome(String nome) {
logger.info("pesquisaPessoaByNome : " + nome);
Criteria c = session.createCriteria(Pessoa.class);
c.add(Restrictions.ilike("nome", "%" + nome + "%"));
c.addOrder(Order.desc("matricula")); // ordem descentente
return (Pessoa) c.uniqueResult();
}
pessoaFacade.java
package br.gov.nutec.facade;
import java.util.List;
import br.gov.nutec.modelo.Pessoa;
public interface PessoaFacade extends BaseFacade<Pessoa> {
@Override
public void salva(Pessoa p);
@Override
public void remove(Pessoa p);
@Override
public Pessoa procura(Long id);
@Override
public void atualiza(Pessoa p);
public boolean autentica(String email, String senha);
public List<Pessoa> pesquisaPessoasByNome(String nome);
public List<Pessoa> pesquisaPessoasByMatricula(String matricula); //*pesquisa matricula
public List<Pessoa> pesquisaPessoasByDigina(String digina);
}
PessoaFacadeImpl .java
package br.gov.nutec.facade;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import br.gov.nutec.dao.PessoaDAO;
import br.gov.nutec.modelo.Pessoa;
public class PessoaFacadeImpl implements PessoaFacade {
private static final long serialVersionUID = 1818242808424001885L;
private PessoaDAO pessoaDAO;
private SessionFactory sf;
private Session session;
private Transaction tx;
@Override
public void salva(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.save(p);
tx.commit();
session.close();
}
@Override
public void atualiza(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.merge(p);
tx.commit();
session.close();
}
@Override
public Pessoa procura(Long id) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.load(id);
tx.commit();
session.close();
return p;
}
@Override
public void remove(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.delete(p);
tx.commit();
session.close();
}
@Override
public List<Pessoa> lista() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.list();
tx.commit();
session.close();
return lista;
}
@Override
public boolean autentica(String email, String senha){
boolean autenticado;
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
autenticado = this.pessoaDAO.verificaEmailSenha(email, senha);
tx.commit();
session.close();
return autenticado;
}
//*******************************PESQUISA MATRICULA NOME ****************************//
@Override
public List<Pessoa> pesquisaPessoasByNome(String nome) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.pesquisaPessoas(nome);
tx.commit();
session.close();
return lista;
}
@Override
public List<Pessoa> pesquisaPessoasByDigina(String digina) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.pesquisaPessoas(digina);
tx.commit();
session.close();
return lista;
}
//** lista pessoa por matrícula
@Override
public List<Pessoa> pesquisaPessoasByMatricula(String matricula) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.pesquisaPessoas(matricula);
tx.commit();
session.close();
return lista;
}
public Pessoa procuraByNome(String nome){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByNome(nome);
tx.commit();
session.close();
return p;
}
// setado por PessoaMB
public Pessoa procuraByMatricula(String matricula) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByMatricula(matricula);
tx.commit();
session.close();
return p;
}
// setado por PessoaMB
public Pessoa procuraByDigina(String digina) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByMatricula(digina);
tx.commit();
session.close();
return p;
}
public Pessoa procuraById(Long id){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaById(id);
tx.commit();
session.close();
return p;
}
public Pessoa procuraByEmail(String email){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByEmail(email);
tx.commit();
session.close();
return p;
}
}
pessoaMB.java
public String pesquisaByNome(){
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.setPessoa(pessoaService.procuraByNome(this.getPessoa().getNome()));
return "pesquisaByNomeSucesso";
}
public String pesquisaByDigina(){
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.setPessoa(pessoaService.procuraByDigina(this.getPessoa().getDigina()));
return "pesquisaByDiginaSucesso";
}
public String pesquisaByMatricula(){ //seta procura by matricula
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.setPessoa(pessoaService.procuraByMatricula(this.getPessoa().getMatricula()));
return "pesquisaByMatriculaSucesso";
}
<h:panelGrid columns="1" id="inputs">
<h:outputLabel for="nomeLabel" value="Digite o Nome: " />
<h:inputText id="nomeInput" value="#{pessoaMB.pessoa.nome}" style=" width : 250px;" styleClass="inputPesquisa">
<a4j:commandButton value="Pesquisar" action="#{pessoaMB.pesquisaByNome}" reRender="pessoas">
</a4j:commandButton>
</h:inputText>
<h:outputLabel for="matriculaLabel" value="Digite a Matrícula: " />
<h:inputText id="matriculaInput" value="#{pessoaMB.pessoa.matricula}" style=" width : 250px;" styleClass="inputPesquisa">
<a4j:commandButton value="Pesquisar" action="#{pessoaMB.pesquisaByMatricula}" reRender="pessoas">
</a4j:commandButton>
</h:inputText>
<h:outputLabel for="diginaLabel" value="Digite a Digina: " />
<h:inputText id="diginaInput" value="#{pessoaMB.pessoa.digina}" style=" width : 250px;" styleClass="inputPesquisa">
<a4j:commandButton value="Pesquisar" action="#{pessoaMB.pesquisaByDigina}" reRender="pessoas">
</a4j:commandButton>
</h:inputText>
</h:panelGrid>
grid
<rich:dataTable value="#{pessoaMB.pessoas}" var="pessoa" rows="30" id="pessoas" width="100%" cellspacing="0" cellpadding="0" border="1">
<h:column>
<f:facet name="header">
<h:outputText value="MATRÍCULA" />
</f:facet>
<h:outputText value="#{pessoa.matricula}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="NOME" />
</f:facet>
<h:outputText value="#{pessoa.nome}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="E-MAIL" />
</f:facet>
<h:outputText value="#{pessoa.email}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CPF" />
</f:facet>
<h:outputText value="#{pessoa.cpf}" />
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="DATA NASC." />
</f:facet>
<h:outputText value="#{pessoa.data_nasc}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</h:column>
<h:column>
<f:facet name="header">
<h:outputText value="CELULAR" />
</f:facet>
<h:outputText value="#{pessoa.celular}" />
</h:column>
<f:facet name="footer">
<rich:datascroller />
</f:facet>
</rich:dataTable>