Dificuldade em uma consulta usando Hibernate-Annotations

7 respostas
higornucci

Sou novo em Java e estou fazendo meu primeiro projeto para a disciplina de Análise e Projeto de Sistemas e meu problema é o seguinte:
Tenho uma classe persistente Funcionario e preciso saber se o cpf do novo func que vou cadastar ja existe, então qdo meu JFormatedTextField ftfCpf perde o foco ele faz uma consulta no banco e me retorna uma consulta na qual eu comparo com o cpf digitado no JTextField, porém não estu conseguindo fazer essa consulta e preciso de ajuda.

Aqui vai meu humilde metodo xD

public List consultarCpfFuncionario(String textoConsulta) {
        session = HibernateUtil.getSession();
        Query query = session.createQuery("from Funcionario f where f.cpf like :textoConsulta");
        query.setString("textoConsulta", "%"+textoConsulta+"%");
    
        List lista = query.list();
        
        return lista;
}
private void ftfCpfFocusLost(java.awt.event.FocusEvent evt) {                                 
    String textoConsulta = ftfCpf.getText();
    Dao<Funcionario> daoFactory = new DaoFactory().getFuncionarioDao();
    resultadoConsulta = daoFactory.consultarCpfFuncionario(textoConsulta);
    if(textoConsulta.equals(resultadoConsulta) && textoConsulta != null) {
        JOptionPane.showMessageDialog(this, "CPF já cadastrado!", "Mensagem", 1);
    }
}

Sei que tem algo de errado no primeiro metodo, mas meu conhecimento não me deixa saber qual.
Alguem poderia me ajudar?

7 Respostas

higornucci

voltando aos recentes xD

hvivox

PARCEIRO! POSTA O ERRO QUE É GERADO SÓ ASSIM PODEREI LHE AJUDAR!

higornucci

Então, não da erro algum, o código executa, mas ele me retorna os dados do Funcionario com o cpf q eu enviei, e eu quero q ele soh verifique se o cpf digitado existe ou não. Daí eu nao sei se eu to errando no codigo sql ou no tipo de variavel q estou usando(List no caso).

hvivox

Cara! então isso não é erro! Faça assim. Se retornar algum valor quer dizer o que o cpf existe,
se retornar NULL quer dizer que o cpf não existe.
Sendo assim a tua consulta está ok! O lance é que vc tem que programar a tua aplicação para reconher quando retornar NULL faça isso…,
se retornar algum valor faça aquilo…
entendeu! é so criatividade. blz

higornucci

Deu certo! brigadão xD

Agora eu preciso saber outra duvida, como fazer uma busca que retorne o id de um funcionario para que eu possa usar esse id desta forma:

Funcionario funcionario = (Funcionario) session.get(Funcionario.class, idConsultado);

para eu poder atualiza-lo.

Resumindo : Quero atraves de um cpf poder resgatar um objeto do tipo Funcionario onde eu possa fazer

objeto.setValorAtualizado(atualizacao);

session.saveOrUpdate(objeto);

Espero que alguem possa me ajudar =]
Aguardando!

hvivox

Seguinte cara!

  1. Resgata os valores do banco - isso vc sabe fazer!
  2. Seta o valor que vc quer atualizar
  3. chama o metodo para atualizar

OBS: o grande lance é não modificar a chave primaria para não dar erro!

higornucci

Resolvido xD
Obrigado

Criado 2 de novembro de 2008
Ultima resposta 3 de nov. de 2008
Respostas 7
Participantes 2