Select returning Null from the database

1

I'm trying to make a login page and I'm using JaVA,JPA,WIldfly,Primefaces and the MYSQL database.

I'm passing the name and password, but at the time of inspecting it it returns me null , throwing the select in the database it selects perfectly.

LOGIN.XHTML

<!DOCTYPE html >
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:p="http://primefaces.org/ui"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets" template="template.xhtml">

    <ui:define name="conteudoForm">

        <h1>Login</h1>
        <p:spacer height="20" />
        <p:panelGrid columns="2" id="painelCadastro">
            <p:outputLabel value="Login" />
            <p:inputText id="inputLogin" value="#{loginMB.usuarios.login}" required="true" />
            <p:outputLabel value="Senha" />
            <p:password id="inputSenha" value="#{loginMB.usuarios.senha}" required="true"
                maxlength="7" />
        </p:panelGrid>
        <p:panelGrid>
            <p:commandButton value="Entrar" action="#{loginMB.doEfetuarLogin}" />
        </p:panelGrid>
    </ui:define>
</ui:composition>

USER.DAO

package br.com.sicoob.DAO;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import br.com.sicoob.Service.UsuariosService;
import br.com.sicoob.entidades.Usuarios;

@Stateless
public class UsuariosDAO implements Serializable, UsuariosService {

    /**
     * 
     */
    private static final long serialVersionUID = 1L;


    @PersistenceContext
    private EntityManager em;

    /**
     * 
     * @param u
     */
    @Override
    public void remover(Usuarios u) {
        u = em.merge(u);
        em.remove(u);
    }

    /**
     * 
     * @return
     */
    @Override
    @SuppressWarnings("unchecked")
    public List<Usuarios> listarTodos() {
        List<Usuarios> usuarios = new ArrayList<Usuarios>();
        Query q = em.createQuery("select obj from Usuarios obj");
        usuarios = q.getResultList();
        return usuarios;
    }

    /**
     * 
     * @param id
     * @return
     */
    public Usuarios buscarPorId(Long id) {
        return em.find(Usuarios.class, id);
    }

    /**
     * 
     * @param u
     * @return
     */
    public Usuarios carregarEntidade(Usuarios u) {
        return em.merge(u);
    }

//  @Override
//  public void salvarUsuario(Usuarios usuario) {
//      if(usuario.getId() == null) {
//          em.persist(usuario);
//      } else {
//          em.merge(usuario);
//      }
//      
//  }
    @Override
    public Usuarios verificarUsuario(String nome, String senha) {
         try {
             Usuarios usuarios = (Usuarios) em.createQuery("SELECT nome , senha from usuarios where nome ='"+ nome +"' and senha ='"+ senha +"'").setParameter("nome", nome).setParameter("senha", senha).getSingleResult();

             return usuarios;
       } catch (Exception e) {
           System.out.println(e.getMessage());
             return null;
       }

    }



}

LOGIN.MB

package br.com.sicoob.ManagedBeans;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import javax.inject.Inject;

import br.com.sicoob.DAO.UsuariosDAO;
import br.com.sicoob.Service.UsuariosService;
import br.com.sicoob.entidades.Usuarios;

@ManagedBean(name = "loginMB")
@SessionScoped
public class LoginMB {
    private Usuarios usuarios = new Usuarios();
    private List<Usuarios> listaUsuarios = new ArrayList<Usuarios>();
    private UsuariosDAO UsuariosDAO = new UsuariosDAO();

    @Inject
    private UsuariosService usuariosService;

    @PostConstruct
    public void init() {
        setListaUsuarios(usuariosService.listarTodos());
    }

    public String doEfetuarLogin() throws IOException {
         usuarios = UsuariosDAO.verificarUsuario(usuarios.getLogin(), usuarios.getSenha());
        if (usuarios == null) {
            usuarios = new Usuarios();
            FacesContext.getCurrentInstance().addMessage(null,
                    new FacesMessage(FacesMessage.SEVERITY_ERROR, "Usuário não encontrado!", "Erro no Login!"));
            return null;
        } else {
            return "/main";
        }

    }

    public Usuarios getUsuarios() {
        return usuarios;
    }

    public void setUsuario(Usuarios usuarios) {
        this.usuarios = usuarios;
    }

    public List<Usuarios> getListaUsuarios() {
        return listaUsuarios;
    }

    public void setListaUsuarios(List<Usuarios> listaUsuarios) {
        this.listaUsuarios = listaUsuarios;
    }

}

Inspecting returns NULL:

    
asked by anonymous 30.08.2016 / 16:49

1 answer

2

Your query is wrong in:

 Usuarios usuarios = (Usuarios) em.createQuery("SELECT nome , senha from usuarios where nome ='"+ nome +"' and senha ='"+ senha+"'")
.setParameter("nome", nome).setParameter("senha", senha)
.getSingleResult();

Change to:

Usuarios usuarios = (Usuarios) em.createQuery("SELECT * from usuarios where nome = :nome and senha :senha")
.setParameter("nome", nome)
.setParameter("senha", senha)
.getSingleResult();

See more details here .

    
30.08.2016 / 17:11