Duvidas com metodo checar login

2 respostas
L

pessoal estou com duvidas quanto a um metodo que deve verificar se um determinado login esta disponivel na hora de cadastrar um novo usuario,
segue os metodos abaixo:

public Boolean checarLogin(String login) {
	session = HibernateUtil.getInstance();
	//Transaction tx = null;
	//try {
	//	tx = session.beginTransaction();
		Query query = session
				.createQuery("From Usuario u  where  u.login= :login  ");
		Usuario u = (Usuario) query.setParameter("login", login);
		if(u.getLogin()!= null){
			return false;
		}else
			return true;
		
	//} catch (HibernateException e) {
	//	tx.rollback();
	//} finally {
	//	session.close();
	//}
//	return null;
}
}



public String validaLogin(){
		IDaoUsuario idao = new DaoUsuario();
		Boolean resultado = idao.checarLogin("xxx");
		if(resultado !=true){
			mensagem("logininvalido");
			return "bad"; 			
		}		
		return "ok";
	}

Ele sempre da nullPointer,como posso resolver isto?
flws.

2 Respostas

_fs

Cara, query.setParameter() retorna o próprio objeto do tipo Query, não Usuario.

L

Blz modifiquei o metodo mas ele sempre me retorna true, o que eu quero e somente xecar no banco se o login ja existe

@SuppressWarnings("unchecked")
public Boolean checarLogin(String login) {
	session = HibernateUtil.getInstance();
	Transaction tx = null;
	try {
		tx = session.beginTransaction();
		String hql="from Usuario u where u.login= :login";
		Query query = session.createQuery(hql);		
	  List<Usuario> u = (List<Usuario>) query.setString("login", login).list();
	   Iterator iter = u.iterator();
       if (!iter.hasNext())
       {	
    	   System.out.println("login ja existe!");
			return true;
		
		}else
			System.out.println("login disponivel!");
			return false;
		
	} catch (HibernateException e) {
		tx.rollback();
	} finally {
		session.close();
	}
	return null;
}
public void validaLogin(ActionEvent e) {
		IDaoUsuario idao = new DaoUsuario();		
		if(!idao.checarLogin(this.usuario.getLogin())){			   	
			mensagem("senhainvalida");					
		}	
		else{
			if(idao.checarLogin(this.usuario.getLogin()))		
			
			mensagem("logininvalido");
		
		
		}
	}
aqui a mensagem que estou recebendo
14:12:53,265 INFO  [STDOUT] Hibernate: select usuario0_.usuarioid as usuarioid18_, usuario0_.nome as nome18_, usuario0_.sobrenome as sobrenome18_, usuario0_.setor as setor18_, usuario0_.login as login18_, usuario0_.senha as senha18_, usuario0_.datainclusao as dataincl7_18_, usuario0_.perfilid as perfilid18_ from usuario usuario0_ where usuario0_.login=?
14:12:53,296 INFO  [STDOUT] login ja existe!
14:12:53,296 INFO  [STDOUT] Hibernate: select usuario0_.usuarioid as usuarioid18_, usuario0_.nome as nome18_, usuario0_.sobrenome as sobrenome18_, usuario0_.setor as setor18_, usuario0_.login as login18_, usuario0_.senha as senha18_, usuario0_.datainclusao as dataincl7_18_, usuario0_.perfilid as perfilid18_ from usuario usuario0_ where usuario0_.login=?
14:12:53,296 INFO  [STDOUT] login ja existe!
14:12:53,390 INFO  [lifecycle] WARNING: FacesMessage(s) have been enqueued, but may not have been displayed.
sourceId=null[severity=(ERROR 2), summary=(Este Login não esta disponivel no momento.), detail=(Este Login não esta disponivel no momento.)]

mesmo enviando um login valido sempre retorna a msm coisa.

Criado 7 de abril de 2008
Ultima resposta 7 de abr. de 2008
Respostas 2
Participantes 2