Problemas para selecionar apenas um nome no banco de dados

6 respostas
J

Olá pessoal, como eu faço para selecionar apenas um nome para ser mostrado.
Do jeito que eu fiz esta mostrando todos do banco. Se puderem me ajudar agradeço.

Session s = HibernateUtil.getSessionFactory().getCurrentSession();
       
        s.beginTransaction();
        List<Docente> lista = (List<Docente>)s.createQuery("from Docente").list();
        
        for(Docente d : lista){
            JOptionPane.showMessageDialog(null,"Nome: " + d.getNome());
            
        }
        
        s.getTransaction().commit();
    }

6 Respostas

drsmachado

Você precisa limitar a consulta ao nome que deseja ou, ao invés de iterar sobre a lista de resultados, defina qual posição deseja mostrar.

drsmachado

Outro detalhe, não é preciso invocar o método commit em SELECT.
Ele não altera a estrutura dos dados do banco, portanto, o commit é desnecessário.

J

Estou querendo pegar o nome que irei digitar e verificar se existe no banco, travei nessa parte. Como posso fazer isso?

drsmachado

Tá, mas isso, com certeza, trará mais de uma possibilidade para as primeiras letras digitadas.
Considere que você tem no banco:

Ao digitar “an”, “car” ou “franc” você terá uma série de possibilidades.

Agora se quer digitar, clicar em um botão (ou disparar outro evento) e então buscar, aí é diferente.

J

É isso que estou querendo. Digitar um nome e clicar em buscar para me mostrar se existe esse nome e mostrar na tela

drsmachado

Bom, ainda chegamos ao mesmo ponto, pode haver nomes duplicados.
Enfim, a maneira mais simples de faer isto é

Session s = HibernateUtil.getSessionFactory().getCurrentSession();  
             
            s.beginTransaction();  
			
			Query q = s.createQuery("FROM Docente d WHERE d.nome = " + nome);
            List<Docente> lista = q.list();  
              
            for(Docente d : lista){  
                JOptionPane.showMessageDialog(null,"Nome: " + d.getNome());  
            }  
        }
Criado 5 de junho de 2012
Ultima resposta 5 de jun. de 2012
Respostas 6
Participantes 2