Buscar usuário e senha no banco com Hibernate

6 respostas
cajobao

Pessoal, boa noite.
Sou novo em hibernate e estou tentando buscar no banco um usuário e senha cadastrados.
Meu hibernate.cfg.xml está ok bem como o arquivo de configuração da tabela no banco.

Segue meu código:

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;


public class ListaDados {
	public static void main(String[] args) {
		SessionFactory sf = new Configuration().configure().buildSessionFactory();
		Session session = sf.openSession();
		
		Cadastro cadastro = new Cadastro();
		cadastro.setnome(session.getNamedQuery("select nome from Cadastro where nome = 'jacob'").toString());
		cadastro.setsobrenome(session.getNamedQuery("select sobrenome from Cadastro where sobrenome = 'vilar'").toString());
		
		System.out.println(cadastro.getnome());
		
	}
}

Crio um objeto “cadastro” e uso o session.getNamedQuery para montar a query que valida o usuário no banco e atribui ao cadastro.setNome…
Tem outra forma mais simples de fazer ou se esta é a certa, por que está dando o erro:

6 Respostas

Hebert_Coelho

Você precisa entender melhor sobre as queries do Hibernate.

Se você está utilizando Hibernate, pq vc está criando o objeto na unha?

Você também precisa saber a diferença entre NamedQuery e NativeQuery (que é a sintax que você está utilizando).

Esse post aqui explica tudo o que você precisa saber: JPA Consultas e Dicas.

cajobao

Fiz de forma simples pra ver se tinha resposta simples. A sintese da coisa é:
Tipo eu tenho o usuario e senha pra validar:

String usuario = "jacob"; //usuario que ja tenho
String senha = "12345678"; ////senha que ja tenho

ai agora eu quero ir no banco, pegar apenas o usuário que seja igual aquele e senha igual aquela… Tipo:

String usuarioDoBanco = // usuario do banco
String senhaDoBanco = //senha do banco
alberthy

Você tem que dá uma estudada melhor no hibernate.

String usernameDigitado = "";
		String keyDigitado = "";
		
		List query = session.createQuery("FROM Cadastro c WHERE c.nome = :username AND c.senha =:key")
				.setParameter("username", usernameDigitado)
				.setParameter("key", keyDigitado).list();
		
		if (query.size()>0){
			
			List<Cadastro> newListCadastro = query;
			
			for (Cadastro c : newListCadastro){
				
				// Imprime os dados capturados do banco...
				System.out.printf("Nome: %s - Sobrenome: $s",c.getNome(), c.getSobreNome());
				
			}
			
		}

O resto é com você...

Abraço.

cajobao

Valeu amigo.
Pelo que vi já resolve, mas tem como fazer isso sem usar uma list? Apenas String?
Só pra efeito de conhecimento, afinal, eu estou com essa duvida tem um tempão…
Abraço.

Hebert_Coelho

alberthy:
Você tem que dá uma estudada melhor no hibernate.
Foi exatamente por isso que eu passei o link :smiley:

alberthy

[b]Como o amigo jakefrog falou, você pode utilizar o NativeQuery. Utilize o link que o amigo informou!

Abraço.[/b]

Criado 28 de maio de 2012
Ultima resposta 28 de mai. de 2012
Respostas 6
Participantes 3