dúvida com sistema de login

estou fazendo um sistema de login com hibernate, e estou com problema na verificação do usuario e senha.

o trecho que está com problema é:

public boolean login(String user, String senha) { Usuario retorno; String sql = "from Usuario where UserName = :user and Passwd = :senha"; Query query = this.session.createQuery(sql); query.setString("user", user); query.setString("senha", senha); retorno = (Usuario) query.uniqueResult(); if((retorno.getUsername().equals(user)) && (retorno.getPasswd().equals(senha)) && retorno.equals(null)) return true; else return false; }

não sei como tratar caso a consulta não retorne nada… como seria?

inté!

public boolean login(String user, String senha) {  
    String sql = "from Usuario where UserName = :user and Passwd = :senha";  
    Query query = this.session.createQuery(sql);  
    query.setString("user", user);  
    query.setString("senha", senha);  
    Object retorno = query.uniqueResult();
    if (retorno != null) {
        Usuario usuario = (Usuario) retorno;
        if(usuario.getUsername().equals(user) && usuario.getPasswd().equals(senha))
            return true;  
        else  
            return false;  
    } else
        return false;
}

Colocar um IF a mais para verificar se o retorno é nulo resolve o problema, mas o código ficaria “podre” no que diz respeito a um tratamento específico desse erro. Voce não saberia se o usuário não existe ou se existe e sua senha está incorreta. Mudar o retorno para String e retornar uma mensagem especifica para cada erro ou criar classes Exceptions podem ser opções.

Se a consulta retornar nada é porque o usuário não existe, então o retorno é false.

Não entendi esse trecho de código.

retorno.equals(null)

Para verificar se um objeto é nulo é com operador ==

object == null;

código “pobre” e não “podre”. Lamento

tambem Sugiro… fazer um tratamento melhor

primeiro verifica se o usuario existe… se existir verifica se a senha bate…