SQL login com status?

4 respostas
juniorsatanas

Pessoal tenho uma tabela PESSOA - dentro tenho 3 campos senha/email/status, gostaria de saber como eu faço para comparar nao o objeto pessoa masi sim o valor ativo:

public boolean verificaEmailSenhaStatus(String email, String senha, String status){
		boolean valid = false;
		
		System.out.println("DAO metodo isValidLoginAndPassword...");
		System.out.println("DAO session.isOpen() >>> " + session.isOpen());
		
		Query query = session.createQuery("from Pessoa p where p.email = :em " +
                            "                       and " +
                            "                                    p.senha = :sen" +
                            "                       and          p.status = :ati ");
		query.setString("em", email);
		query.setString("sen", senha);
                    query.setString("ati", status);
		Pessoa pessoa = (Pessoa) query.uniqueResult();
                  
                    if (pessoa != null)  {
                                valid = true;

		}

		System.out.println("DAO Pessoa >>> " + pessoa);
		return valid;

	}

ESTE CÓDIGO PARA

if (pessoa != null)  {
                                valid = true;

algo do tipo:

if (status valor == "ativo" ) && (email valot  != null) && ( senha != null ) {

Obrigado Valeu !

4 Respostas

natureza

Duplicado???

http://www.guj.com.br/posts/list/149854.java

No Seu código:

" and p.status = :ati "); query.setString("ati", status);

Já está fazendo isso não?

juniorsatanas

Dupliquei não mudei a maneira de faze !

Ele faz isso : Seleciona a tabela pessoas, os campos email/senha/status, se o objeto pessoal != null ele loga,

Meu problema é que quando eu entro pelo form de login eu digito email e senha somente, esses valores são comparados com o do banco, mais o campo status não e comparado ai ele não loga. Não consigo resolver essa M… que é tão simples !

Abraço !

natureza

Então é porque o status não esta sendo setado na tela de login.

Seta ele na mão mesmo ai no seu metodo.

Faz um String status = "ativo";

Ja que vai ser sempre ativo mesmo para verificar.

Ai boa não pode ser assim?

Inté

juniorsatanas

Pensei nisso, mais não conseguir fazer !

segue o código , onde ficaria isso :

package br.com.serjaum.dao;

import java.util.List;

import org.apache.log4j.Logger;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.serjaum.modelo.Pessoa;

public class PessoaDAO extends DAO<Pessoa> {

	private Logger logger = Logger.getLogger(PessoaDAO.class);
          	public PessoaDAO(Session session, Class<?> classe) {
		super(session, classe);
	}
	public Pessoa pesquisaPessoaById(Long idPessoa) {
		logger.info("pesquisaPessoaById : " + idPessoa);
		return (Pessoa) session.load(Pessoa.class, idPessoa);
	}
	public Pessoa pesquisaPessoaByNome(String nome) {
		logger.info("pesquisaPessoaByNome : " + nome);
		Criteria c = session.createCriteria(Pessoa.class);
		c.add(Restrictions.ilike("nome", "%" + nome + "%"));

		return (Pessoa)c.uniqueResult();
	}
	public Pessoa pesquisaPessoaByEmail(String email) {
		logger.info("pesquisaPessoaByEmail : " + email);
		Criteria c = session.createCriteria(Pessoa.class);
		c.add(Restrictions.ilike("email", email + "%"));

		return (Pessoa)c.uniqueResult();
	}
          public Pessoa pesquisaPessoaByStatus(String status) {
		logger.info("pesquisaPessoaByStatus : " + status);
		Criteria c = session.createCriteria(Pessoa.class);
		c.add(Restrictions.ilike("status", status + "%"));
		return (Pessoa)c.uniqueResult();
	}
	@SuppressWarnings("unchecked")
	public List<Pessoa> pesquisaPessoas(String nome){
		Criteria c = session.createCriteria(Pessoa.class);
		c.add(Restrictions.ilike("nome", "%" + nome + "%"));
		c.addOrder(Order.asc("nome"));
		
		return c.list();
	}
          @SuppressWarnings("unchecked")
	public List<Pessoa> pesquisaStatus(String nome, String status){
		Criteria c = session.createCriteria(Pessoa.class);
		c.add(Restrictions.ilike("status", "%" + status + "%"));
		c.addOrder(Order.asc("status"));
		return c.list();
	}
	
	public boolean verificaEmailSenhaStatus(String email, String senha, String status){
		boolean valid = false;
		

		System.out.println("DAO metodo isValidLoginAndPassword...");
		System.out.println("DAO session.isOpen() >>> " + session.isOpen());
		
		Query query = session.createQuery("from Pessoa p where p.email = :em " +
                            "                       and " +
                            "                                    p.senha = :sen" +
                            "                       and          p.status = :ati ");
		query.setString("em", email);
		query.setString("sen", senha);
                    query.setString("ati", status);
		Pessoa pessoa = (Pessoa) query.uniqueResult();
                  //** modificado
                    if (pessoa != null)  {
                                valid = true;

		}

		System.out.println("DAO Pessoa >>> " + pessoa);
		return valid;

	}

	public Pessoa buscaPessoa(Long id){
		Query q = session.createQuery("select p from " + Pessoa.class.getName() + " as p where p.id like :id");
		
		q.setParameter("id", id);
		
		return (Pessoa)q.uniqueResult();
	}

              
         
}
Criado 21 de janeiro de 2010
Ultima resposta 21 de jan. de 2010
Respostas 4
Participantes 2