Pessoal ou eu estou muito cansado ou tem algum problema usar Facade !
erro:
An Error Occurred:
Error calling action method of component with id listauser:j_id72:j_id77
Caused by:
java.lang.IllegalArgumentException - id to load is required for loading
package br.gov.nutec.modelo;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Entity;
import javax.persistence.Id;
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
@Entity
@Table(name="pessoa")
public class Pessoa implements Serializable {
private static long serialVersionUID = 2174678509151116408L;
public static long getSerialVersionUID() {
return serialVersionUID;
}
public static void setSerialVersionUID(long aSerialVersionUID) {
serialVersionUID = aSerialVersionUID;
}
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column(name="pessoa_id") // chave primaria
private Long id;
@NotNull
@Length(min =5 , max = 40)
@Column(name="nome")
private String nome;
@Column(name="cpf")
private Long cpf;
@Column(name="matricula")
private String matricula;
/********* etc
pessoaMB.java
package br.gov.nutec.mb;
import java.io.IOException;
import java.io.Serializable;
import java.util.List;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import br.gov.nutec.facade.PessoaFacade;
import br.gov.nutec.facade.PessoaFacadeImpl;
import br.gov.nutec.modelo.Pessoa;
public class PessoaMB implements Serializable {
private static final long serialVersionUID = -333995781063775201L;
private Pessoa pessoa = new Pessoa();
private Long id;
public PessoaMB(){
System.out.println(" >>>>>>>>>>>>>>>>>>>> Contrutor do PESSOA_MB <<<<<<<<<<<<<<<<<<");
if(this.pessoa == null){
this.pessoa = new Pessoa();
}
}
public String login() throws Exception{
boolean logado = false;
HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
PessoaFacade pessoaService = new PessoaFacadeImpl();
logado = pessoaService.autentica(this.pessoa.getEmail(), this.pessoa.getSenha());
if(logado){
session.setAttribute("user", logado);
rp.sendRedirect(rq.getContextPath() + "/pages/index.jsf");
return "success";
}else{
session.setAttribute("user", null);
session.removeAttribute("user");
rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
return "failure";
}
}
public String logout() {
HttpServletRequest rq = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
HttpServletResponse rp = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
FacesContext facesContext = FacesContext.getCurrentInstance();
HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false);
session.invalidate();
try {
rp.sendRedirect(rq.getContextPath() + "/pages/login/login.jsf");
} catch (IOException e) {
e.printStackTrace();
}
return "logoutOk";
}
public String save(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
pessoaService.salva(this.pessoa);
this.pessoa = new Pessoa();
return "cadastraSucesso";
}
public String delete(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
this.pessoa.setId(id);
pessoaService.remove(this.pessoa);
this.pessoa = new Pessoa();
return "removeSucesso";
}
public String merge(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
pessoaService.atualiza(this.pessoa);
this.pessoa = new Pessoa();
return "atualizaSucesso";
}
public String load(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procura(this.id);
return "pesquisaSucesso";
}
public String list(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procura(this.id);
return "pesquisaSucesso";
}
public String pesquisaByNome(){
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procuraByNome(this.pessoa.getNome());
return "pesquisaByNomeSucesso";
}
public String pesquisaByMatricula(){
PessoaFacadeImpl pessoaService = new PessoaFacadeImpl();
this.pessoa = pessoaService.procuraByMatricula(this.pessoa.getMatricula());
return "pesquisaByMatriculaSucesso";
}
public List<Pessoa> getPessoasByMatricula(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
List<Pessoa> lista = pessoaService.pesquisaPessoasByMatricula(this.pessoa.getMatricula());
return lista;
}
public List<Pessoa> getPessoas(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
return pessoaService.lista();
}
public List<Pessoa> getPessoasByNome(){
PessoaFacade pessoaService = new PessoaFacadeImpl();
List<Pessoa> lista = pessoaService.pesquisaPessoasByNome(this.pessoa.getNome());
return lista;
}
public Pessoa getPessoa() {
return pessoa;
}
public void setPessoa(Pessoa pessoa) {
this.pessoa = pessoa;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
}
pessoaFacadeImpl.java
package br.gov.nutec.facade;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.AnnotationConfiguration;
import br.gov.nutec.dao.PessoaDAO;
import br.gov.nutec.modelo.Pessoa;
public class PessoaFacadeImpl implements PessoaFacade {
private static final long serialVersionUID = 1818242808424001885L;
private PessoaDAO pessoaDAO;
private SessionFactory sf;
private Session session;
private Transaction tx;
@Override
public void salva(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.save(p);
tx.commit();
session.close();
}
@Override
public void atualiza(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.merge(p);
tx.commit();
session.close();
}
@Override
public Pessoa procura(Long id) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.load(id);
tx.commit();
session.close();
return p;
}
@Override
public void remove(Pessoa p) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
this.pessoaDAO.delete(p);
tx.commit();
session.close();
}
@Override
public List<Pessoa> lista() {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.list();
tx.commit();
session.close();
return lista;
}
@Override
public List<Pessoa> pesquisaPessoasByNome(String nome) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
List<Pessoa> lista = this.pessoaDAO.pesquisaPessoas(nome);
tx.commit();
session.close();
return lista;
}
public Pessoa procuraById(Long id){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaById(id);
tx.commit();
session.close();
return p;
}
public Pessoa procuraByNome(String nome){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByNome(nome);
tx.commit();
session.close();
return p;
}
public Pessoa procuraByEmail(String email){
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByEmail(email);
tx.commit();
session.close();
return p;
}
@Override
public boolean autentica(String email, String senha){
boolean autenticado;
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
autenticado = this.pessoaDAO.verificaEmailSenha(email, senha);
tx.commit();
session.close();
return autenticado;
}
//** lista pessoa por matrícula
@Override
public List<Pessoa> pesquisaPessoasByMatricula(String matricula) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByMatricula(matricula);
tx.commit();
session.close();
return (List<Pessoa>) p;
}
// setado por PessoaMB
public Pessoa procuraByMatricula(String matricula) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByMatricula(matricula);
tx.commit();
session.close();
return (Pessoa) (List<Pessoa>) p;
}
@Override
public void List(Pessoa matricula) {
sf = new AnnotationConfiguration().configure().buildSessionFactory();
session = sf.openSession();
tx = session.beginTransaction();
pessoaDAO = new PessoaDAO(session, Pessoa.class);
Pessoa p = this.pessoaDAO.pesquisaPessoaByMatricula(matricula);
tx.commit();
session.close();
return ;
//* nao tem retorno
}
}
pessoaDAO.java
package br.gov.nutec.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.gov.nutec.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();
}
//**pesquisa por matricula */
@SuppressWarnings("unchecked")
public Pessoa pesquisaPessoaByMatricula(String matricula) {
logger.info("pesquisaPessoaByMatricula : " + matricula);
Criteria c = session.createCriteria(Pessoa.class);
c.add(Restrictions.ilike("matricula", "%" + matricula + "%"));
return (Pessoa)c.uniqueResult();
}
@SuppressWarnings("unchecked")
public Pessoa pesquisaPessoaByMatricula(Pessoa matricula) {
logger.info("pesquisaPessoaByMatricula : " + matricula);
Criteria c = session.createCriteria(Pessoa.class);
c.add(Restrictions.ilike("matricula", "%" + matricula + "%"));
return (Pessoa)c.uniqueResult();
}
/** fim */
public Pessoa pesquisaPessoaByEmail(String email) {
logger.info("pesquisaPessoaByEmail : " + email);
Criteria c = session.createCriteria(Pessoa.class);
c.add(Restrictions.ilike("email", email + "%"));
c.addOrder(Order.desc("matricula")); // ordem descentente
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();
}
public boolean verificaEmailSenha(String email, String senha){
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");
query.setString("em", email);
query.setString("sen", senha);
Pessoa pessoa = (Pessoa) query.uniqueResult();
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();
}
}
o xhtml
<h:panelGrid columns="2" id="inputs">
<h:outputLabel for="nomeLabel" value="Digite o Nome: " />
<h:inputText id="nomeInput" value="#{pessoaMB.pessoa.nome}" style=" width : 250px;" styleClass="inputPesquisa">
<a4j:commandButton value="Pesquisar" action="#{pessoaMB.list}" reRender="pessoas">
</a4j:commandButton>
</h:inputText>
</h:panelGrid>