Pessoal Seguinte tenho um problema
eu tenho conexao com varios banco de dados
com isso eu fiz uma classe chamada conexao , onde eu tenho a verificacao de qual banco usar
/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package DAO;
import CDI.Corporativo;
import CDI.Java3DS;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import javax.inject.Named;
import javax.persistence.EntityManager;
/**
*
- @author Windows
*/
@Named
@Dependent
public class Conexao {@Inject @Corporativo //para injetar o EntityManager Corporativo(que acessa o BD do corporativo) private EntityManager em;
@Inject @Java3DS //para injetar o EntityManager Corporativo(que acessa o BD do corporativo) private EntityManager em2; public EntityManager getEntityManager(String codgru){ EntityManager entityManager = null; switch(codgru){ case "FELI-9001": entityManager = em; break; case "FELI-9002": entityManager = em2; break; } return entityManager; }
}
no meu DAO de usuarios eu tento pegar o entityManger referente a conexao pelo “codgru”
package DAO;
import Entity.Cadusr;
import javax.inject.Inject;
import javax.persistence.EntityManager;
import javax.persistence.Query;
public class UsuarioDao {
@Inject private Conexao dao;
public Cadusr buscaUsuario(String grupo, String usuario, String senha) { EntityManager em = dao.getEntityManager(grupo); Cadusr cadusr = null;
if (em != null) { String jpql = "select a from Cadusr a where a.nomusr = :nomusr and a.pasusr = :pasusr and a.usratv = 'S'"; Query query = em.createQuery(jpql, Cadusr.class); query.setParameter("nomusr", usuario); query.setParameter("pasusr", senha); try { cadusr = (Cadusr) query.getSingleResult();
} catch (Exception e) { } if (cadusr == null) { return null; } else { return cadusr; } } else { return null; } }
}
e no meu bean eu faço as verificaçoes
/*
- To change this license header, choose License Headers in Project Properties.
- To change this template file, choose Tools | Templates
- and open the template in the editor.
*/
package Controller;
import DAO.UsuarioDao;
import Entity.Cadusr;
import java.io.Serializable;
import java.util.List;
import javax.enterprise.context.RequestScoped;
import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.inject.Named;
@Named
@RequestScoped
public class mbean_001_Login implements Serializable {
private String Usuario; private String Grupo; private String senha;
UsuarioDao usuarioDao = new UsuarioDao();
public String Vusuario() { if (Grupo.equals("") || Usuario.equals("") || senha.equals("")) { if (Grupo.equals("")) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Grupo não Preenchido"));
} else if (Usuario.equals("")) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Usúario não Preenchido"));
} else if (senha.equals("")) { FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "", "Senha não Preenchida"));
}
return "";
} else { Cadusr cadusr = usuarioDao.buscaUsuario(Grupo, Usuario, senha); return "";
} }
public String getUsuario() { return Usuario; }
public void setUsuario(String Usuario) { this.Usuario = Usuario; }
public String getGrupo() { return Grupo; }
public void setGrupo(String Grupo) { this.Grupo = Grupo; }
public String getSenha() { return senha; }
public void setSenha(String senha) { this.senha = senha; }
}
o problema é o seguinte, meu em esta vindo nulo, quando eu injeto o em direto pelo bean , ele da certo , eu consigo recuperar o usuario , alguem pode me ajudar?