Estou com problema que após executo qualquer operação (insert, delete, update), coloquei para aplicação setar o Objeto e lista para null, pois para evitar uma consulta ao banco.
Mas dae quando clico em qualquer outra operação ocorre esse erro.
Segue em anexo a imagem do erro
package model;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Lesliê Cardoso da Silva
* @since 03-11-2010
*/
public class PessoaFisica {
private Integer id_pessoa_fisica;
private String nome;
private String cpf;
private Documento documento;
private List<Fone> listaFone;
public String getCpf() {
return cpf;
}
public void setCpf(String cpf) {
this.cpf = cpf;
}
public Integer getId_pessoa_fisica() {
return id_pessoa_fisica;
}
public void setId_pessoa_fisica(Integer id_pessoa_fisica) {
this.id_pessoa_fisica = id_pessoa_fisica;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public Documento getDocumento() {
if(documento == null){
documento = new Documento();
}
return documento;
}
public void setDocumento(Documento documento) {
this.documento = documento;
}
public List<Fone> getListaFone() {
if(listaFone==null){
listaFone = new ArrayList<Fone>();
}
return listaFone;
}
public void setListaFone(List<Fone> listaFone) {
this.listaFone = listaFone;
}
}
DAO (PessoaFisica)
package dao;
import Validator.CPFValidator;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
import model.Documento;
import model.Fone;
import model.PessoaFisica;
import util.Conexao;
import util.ExceptionDatabase;
/**
*
* @author Lesli� Cardoso da Silva
* @since 03-11-2010
*/
public class PessoaFisicaDAO {
protected Integer getIdSequence(Conexao con) throws ExceptionDatabase
{
String sql = "select nextval('sisrh.id_pessoa_fisica_seq')";
Statement stmt;
try
{
stmt = con.getCon().createStatement();
ResultSet rs= stmt.executeQuery(sql);
if(rs.next())
{
return (rs.getInt(1));
}
return null;
}
catch(SQLException e)
{
throw new ExceptionDatabase(e.getMessage());
}
}
public Boolean adicionarTelefone(PessoaFisica pf, List<Fone> listaFones, Conexao con) throws ExceptionDatabase{
FoneDAO fDAO = new FoneDAO();
for(Fone f:pf.getListaFone())
{
try
{
fDAO.insert(con, f);
}
catch (ExceptionDatabase e)
{
throw new ExceptionDatabase(e.getMessage());
}
}
return Boolean.TRUE;
}
public Boolean insert(PessoaFisica pf, List<Fone> listaFones) throws ExceptionDatabase{
StringBuilder sql = new StringBuilder();
Conexao con = new Conexao();
sql.append("INSERT INTO sisrh.pessoafisica(id_pessoa_fisica, nome, cpf) ");
sql.append("VALUES (?, ?, ?); ");
try
{
con.open(false);
CPFValidator C = new CPFValidator();
C.validate(null, null, pf.getCpf());
pf.setId_pessoa_fisica(this.getIdSequence(con));
PreparedStatement stmt = con.getPreparedStatement(sql.toString());
stmt.setInt(1,pf.getId_pessoa_fisica());
stmt.setString(2,pf.getNome());
stmt.setString(3,pf.getCpf());
con.executeSQL(stmt);
DocumentoDAO doc = new DocumentoDAO();
doc.insert(con,pf.getDocumento(),pf);
adicionarTelefone(pf, pf.getListaFone(),con);
/*for(Fone f:pf.getListaFone() ){
fDAO.insert(con, f);
}*/
con.commit();
return Boolean.TRUE;
}
catch(ExceptionDatabase e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
catch(SQLException e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
finally{
con.close();
}
}
public Boolean delete(PessoaFisica pf) throws ExceptionDatabase{
StringBuilder sql = new StringBuilder();
Conexao con = new Conexao();
sql.append("DELETE FROM sisrh.pessoafisica WHERE id_pessoa_fisica = ? ");
try
{
con.open();
PreparedStatement stmt = con.getPreparedStatement(sql.toString());
stmt.setInt(1,pf.getId_pessoa_fisica());
con.executeSQL(stmt);
return Boolean.TRUE;
}
catch(ExceptionDatabase e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
catch(SQLException e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
finally{
con.close();
}
}
public List<PessoaFisica> findPessoaFisicaForNome(PessoaFisica pf) throws ExceptionDatabase{
StringBuilder sql = new StringBuilder();
sql.append("SELECT * FROM sisrh.pessoafisica ");
sql.append("INNER JOIN sisrh.documento ON ");
sql.append("pessoafisica.id_pessoa_fisica = documento.id_pessoa_fisica ");
sql.append("WHERE nome ilike ? ");
try
{
Conexao con = new Conexao();
con.open();
PreparedStatement stm = con.getPreparedStatement(sql.toString());
stm.setString(1,"%"+((pf.getNome()==null)?"":pf.getNome())+"%");
ResultSet rs = con.execQuery(stm);
List<PessoaFisica> list = new ArrayList<PessoaFisica>();
while(rs.next()){
PessoaFisica lpf = new PessoaFisica();
lpf.setId_pessoa_fisica(rs.getInt("id_pessoa_fisica"));
lpf.setNome(rs.getString("nome"));
lpf.setCpf(rs.getString("cpf"));
Documento doc = new Documento();
doc.setNumero_certidao(rs.getString("numero_certidao"));
doc.setOrgao_expedidor(rs.getString("orgao_expedidor"));
doc.setRg(rs.getString("rg"));
lpf.setDocumento(doc);
list.add(lpf);
}
return list;
} catch (ExceptionDatabase e) {
throw new ExceptionDatabase(e.getMessage());
} catch (SQLException e) {
throw new ExceptionDatabase(e.getMessage());
}
}
public PessoaFisica findPessoaFisicaForId(PessoaFisica pf) throws ExceptionDatabase{
String sql = "SELECT * FROM sisrh.pessoafisica INNER JOIN sisrh.documento ON pessoafisica.id_pessoa_fisica = documento.id_pessoa_fisica WHERE cpf = ? ";
try {
Conexao con = new Conexao();
con.open();
PreparedStatement stm = con.getPreparedStatement(sql);
stm.setString(1,pf.getCpf());
ResultSet rs = con.execQuery(stm);
if(rs.next()){
pf.setId_pessoa_fisica(rs.getInt("id_pessoa_fisica"));
pf.setNome(rs.getString("nome"));
pf.setCpf(rs.getString("cpf"));
Documento doc = new Documento();
doc.setNumero_certidao(rs.getString("numero_certidao"));
doc.setOrgao_expedidor(rs.getString("orgao_expedidor"));
doc.setRg(rs.getString("rg"));
pf.setDocumento(doc);
}
return pf;
} catch (ExceptionDatabase e) {
throw new ExceptionDatabase(e.getMessage());
} catch (SQLException e) {
throw new ExceptionDatabase(e.getMessage());
}
}
public Boolean update(PessoaFisica pf, List<Fone> listaFones) throws ExceptionDatabase {
StringBuilder sql = new StringBuilder();
Conexao con = new Conexao();
sql.append("UPDATE sisrh.pessoafisica ");
sql.append("SET nome =?, cpf = ? ");
sql.append("WHERE id_pessoa_fisica = ?");
try
{
con.open(false);
PreparedStatement stmt = con.getPreparedStatement(sql.toString());
stmt.setString(1,pf.getNome());
stmt.setString(2,pf.getCpf());
stmt.setInt(3,pf.getId_pessoa_fisica());
con.executeSQL(stmt);
DocumentoDAO doc = new DocumentoDAO();
//if(pf.getDocumento().getPessoafisica().getId_pessoa_fisica() != null) {
doc.update(con, pf.getDocumento(), pf);
//}
adicionarTelefone(pf, pf.getListaFone(),con);
con.commit();
return Boolean.TRUE;
}
catch(ExceptionDatabase e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
catch(SQLException e)
{
con.rollBack();
throw new ExceptionDatabase("Erro: "+e.getMessage());
}
finally{
con.close();
}
}
}
Control (PessoaFisica)
package control;
import Validator.PessoaValidator;
import dao.FoneDAO;
import java.util.List;
import dao.PessoaFisicaDAO;
import model.Fone;
import model.PessoaFisica;
import util.ExceptionDatabase;
/**
*
* @author Lesliê Cardoso da Silva
* @since 03-11-2010
*/
public class PessoaController extends MessageController {
private PessoaFisica pessoa;
private List<PessoaFisica> listpessoa;
private List<Fone> listfone;
private Fone fone;
public List<Fone> getListfone() throws ExceptionDatabase {
if(listfone == null)
{
try {
FoneDAO fDAO = new FoneDAO();
listfone = fDAO.findById(getPessoa());
} catch (ExceptionDatabase e) {
throw new ExceptionDatabase(e.getMessage());
}
}
return listfone;
}
public void setListfone(List<Fone> listfone) {
this.listfone = listfone;
}
public PessoaFisica getPessoa() {
if(pessoa == null){
pessoa = new PessoaFisica();
}
return pessoa;
}
public void setPessoa(PessoaFisica pessoa) {
this.pessoa = pessoa;
}
public void insert() {
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
PessoaValidator v = new PessoaValidator();
v.validate(null, null, getPessoa());
try
{
pfDAO.insert(getPessoa(),getPessoa().getListaFone());
setPessoa(null);
setListpessoa(null);
setInfoMessage("Pessoa inserida com sucesso!");
}
catch(ExceptionDatabase e)
{
setErroMessage("Ocorreu um erro ao inserir a pessoa! "+e.getMessage());
}
}
public void update(){
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
try
{
pfDAO.update(getPessoa(),getPessoa().getListaFone());
setPessoa(null);
setListpessoa(null);
setInfoMessage("Pessoa atualizada com sucesso!");
}
catch(ExceptionDatabase e)
{
setErroMessage("Ocorreu um erro ao atualizar a pessoa! Verifique senão encontra inserido a pessoa com este CPF.");
}
}
public void acaoAddFone(){
getFone().setPessoafisica(getPessoa());
getPessoa().getListaFone().add(getFone());
setFone(null);
}
public void findPessoaFisicaForId(){
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
try
{
setPessoa(pfDAO.findPessoaFisicaForId(getPessoa()));
if(getPessoa().getId_pessoa_fisica() == null){
setInfoMessage("Pessoa não encontrada!");
}
}
catch (ExceptionDatabase e)
{
setErroMessage(e.getMessage());
}
}
public List<PessoaFisica> getListpessoa() {
if(listpessoa==null)
{
try {
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
listpessoa = pfDAO.findPessoaFisicaForNome(getPessoa());
} catch (ExceptionDatabase e) {
setErroMessage(e.getMessage());
}
}
return listpessoa;
}
public void setListpessoa(List<PessoaFisica> listpessoa) {
this.listpessoa = listpessoa;
}
public void acaoLimpar(){
setPessoa(null);
}
public Fone getFone() {
if(fone==null){
fone = new Fone();
}
return fone;
}
public void setFone(Fone fone) {
this.fone = fone;
}
public void delete(){
PessoaFisicaDAO pfDAO = new PessoaFisicaDAO();
try
{
pfDAO.delete(getPessoa());
setPessoa(null);
setListpessoa(null);
setInfoMessage("Pessoa excluída com sucesso!");
}
catch(ExceptionDatabase e)
{
setErroMessage("Ocorreu um erro ao excluir esta pessoa! "+e.getMessage());
}
}
}
View (PessoaFisica)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<title>:: SisRH - Cadastro de Pessoas ::</title>
<p:resources />
</h:head>
<f:view>
<h:body>
<ui:composition template="template.xhtml">
<!-- -->
<ui:define name="conteudo">
<p:messages/>
<h:form prependId="false">
<h:outputLabel value="Cadastrar pessoa" style="font-family:Arial; font-size: 20px; font-weight: bolder; color: white;" />
<div style="float: right">
<h:commandButton id="btnVoltar" action="listarPessoa.jsf" immediate="true" value="Voltar" />
</div>
<br/>
<br/>
<fieldset><legend>Informações pessoais</legend>
<h:panelGrid columns="2">
<h:outputLabel for="cpf" value="*CPF:" style="cursor: pointer;" />
<h:panelGroup>
<p:inputMask value="#{pessoaController.pessoa.cpf}" validator="cpfValidator" converter="cpfConverter" id="cpf" mask="[CPF removido]" autocomplete="off" maxlength="11" />
<h:commandLink action="#{pessoaController.findPessoaFisicaForId}" ><h:graphicImage value="img/lupa.gif"/></h:commandLink>
</h:panelGroup>
<h:outputLabel for="nome" value="*Nome:" style="cursor: pointer;" />
<h:inputText value="#{pessoaController.pessoa.nome}" id="nome" autocomplete="off" size="60" maxlength="200" />
</h:panelGrid>
</fieldset>
<fieldset><legend>Documentos pessoais</legend>
<h:panelGrid columns="2">
<h:outputLabel for="rg" value="RG:" style="cursor: pointer;"/>
<h:inputText value="#{pessoaController.pessoa.documento.rg}" id="rg" autocomplete="off" maxlength="15"/>
<h:outputLabel for="orgao_expedidor" value="Orgão Expedidor:" style="cursor: pointer;"/>
<h:inputText value="#{pessoaController.pessoa.documento.orgao_expedidor}" id="orgao_expedidor" autocomplete="off" maxlength="15"/>
<h:outputLabel for="numero_certidao" value="Número da Certidão:" style="cursor: pointer;"/>
<h:inputText value="#{pessoaController.pessoa.documento.numero_certidao}" id="numero_certidao" autocomplete="off" maxlength="15"/>
</h:panelGrid>
</fieldset>
<fieldset><legend>Telefones</legend>
<h:panelGrid columns="5">
<h:outputText value="Prefixo"/>
<p:inputMask mask="99" id="prefixo" size="5" autocomplete="off" value="#{pessoaController.fone.prefixo}"/>
<h:outputText value="Número"/>
<p:inputMask mask="9999-9999" id="numero" converter="telefoneConverter" autocomplete="off" value="#{pessoaController.fone.numero}"/>
<h:commandButton value="+" action="#{pessoaController.acaoAddFone}"/>
</h:panelGrid>
<p:dataTable var="obj" value="#{pessoaController.pessoa.listaFone}" rendered="#{! empty pessoaController.pessoa.listaFone}">
<p:column headerText="Prefixo" >
<h:outputText value="#{obj.prefixo}" />
</p:column>
<p:column headerText="Número do Telefone" >
<h:outputText value="#{obj.numero}" />
</p:column>
</p:dataTable>
</fieldset>
<h:panelGrid columns="4">
<h:commandButton action="#{pessoaController.insert}" disabled="#{pessoaController.pessoa.id_pessoa_fisica != null}" id="btnInserir" value="Inserir" />
<h:commandButton action="#{pessoaController.update}" disabled="#{pessoaController.pessoa.id_pessoa_fisica == null}" id="btnSalvar" value="Salvar" />
<h:commandButton id="btnLimpar" action="#{pessoaController.acaoLimpar}" disabled="#{pessoaController.pessoa.id_pessoa_fisica == null}" value="Limpar" />
</h:panelGrid>
</h:form>
</ui:define>
</ui:composition>
</h:body>
</f:view>
</html>
