Nullpointerexception when saving an object

Asked

Viewed 93 times

3

I have a save methodRegister and in this method I save the company and its address, it saves the company first, but when saving its address occurs a Nullpointerexception

Entity Address Person

@Entity
@Table(name = "enderecopessoa")
public class EnderecoPessoa implements Serializable {
private static final long serialVersionUID = 1L;

private EnderecoId id;
private Endereco endereco;
private String devolucao;
private String devolucaoDescritivo;
private String correspondencia;
private String correspondeciaDescritivo;
private String emailAtualizacaoCadastral;
private Date dataAtualizacaoCadastral;
private Boolean atualizacaoCadastralSic=false;

public EnderecoPessoa() {
    id = new EnderecoId();
    endereco = new Endereco();
}

public EnderecoPessoa(String codigoPessoa, String idTipoEndereco) {
    id = new EnderecoId(codigoPessoa, idTipoEndereco);
    endereco = new Endereco();
}

public EnderecoPessoa(String codigoPessoa, TipoEndereco tipoEndereco) {
    id = new EnderecoId(codigoPessoa, tipoEndereco);
    endereco = new Endereco();
}

@EmbeddedId
public EnderecoId getId() {
    return id;
}

public void setId(EnderecoId id) {
    this.id = id;
}

@Embedded
public Endereco getEndereco() {
    return endereco;
}

public void setEndereco(Endereco endereco) {
    this.endereco = endereco;
}

@Column(length = 1)
public String getDevolucao() {
    return devolucao;
}

public void setDevolucao(String devolucao) {
    this.devolucao = devolucao;
}

@Transient
public String getDevolucaoDescritivo() {
    if (devolucao == null) {
        return "NÃO DEFINIDO!";
    }
    if (devolucao.equals("N")) {
        return "Não";
    } else {
        if (devolucao.equals("S")) {
            return "Sim";
        } else {
            devolucaoDescritivo = "NÃO DEFINIDO!";
            return devolucaoDescritivo;
        }
    }
}

@Column(length = 1)
public String getCorrespondencia() {
    return correspondencia;
}

public void setCorrespondencia(String correspondencia) {
    this.correspondencia = correspondencia;
}

@Transient
public String getCorrespondeciaDescritivo() {
    if (correspondencia.equals("S")) {
        return "Sim";
    } else {
        if (correspondencia.equals("N")) {
            return "Não";
        } else {
            correspondeciaDescritivo = "NÃO DEFINIDO!";
            return correspondeciaDescritivo;
        }
    }
}

@Column(name = "emailAtualizacaoCadastral", length = 60)
public String getEmailAtualizacaoCadastral() {
    return emailAtualizacaoCadastral;
}

public void setEmailAtualizacaoCadastral(String emailAtualizacaoCadastral) {
    this.emailAtualizacaoCadastral = emailAtualizacaoCadastral;
}

@Temporal(javax.persistence.TemporalType.DATE)
public Date getDataAtualizacaoCadastral() {
    return dataAtualizacaoCadastral;
}

public void setDataAtualizacaoCadastral(Date dataAtualizacaoCadastral) {
    this.dataAtualizacaoCadastral = dataAtualizacaoCadastral;
}

public Boolean getAtualizacaoCadastralSic() {
    return atualizacaoCadastralSic;
}

public void setAtualizacaoCadastralSic(Boolean atualizacaoCadastralSic) {
    this.atualizacaoCadastralSic = atualizacaoCadastralSic;
}

@Override
public int hashCode() {
    int hash = 7;
    hash = 71 * hash + (this.id != null ? this.id.hashCode() : 0);
    return hash;
}

@Override
public String toString() {
    return "EnderecoPessoa{" + "id=pessoa{" + id.getPessoa().getCodigo() + "},tipo{" + id.getTipoEndereco().getIdtipoendereco() + "};"
            + "endereco=" + endereco.getEnderecoDescritivo() + ";"
            + "devolucao=" + devolucao + ";"
            + "correspondencia=" + correspondencia + '}';
}

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final EnderecoPessoa other = (EnderecoPessoa) obj;
    if (this.id != other.id && (this.id == null || !this.id.equals(other.id))) {
        return false;
    }
    if (this.endereco != other.endereco && (this.endereco == null || !this.endereco.equals(other.endereco))) {
        return false;
    }
    if ((this.devolucao == null) ? (other.devolucao != null) : !this.devolucao.equals(other.devolucao)) {
        return false;
    }
    if ((this.correspondencia == null) ? (other.correspondencia != null) : !this.correspondencia.equals(other.correspondencia)) {
        return false;
    }
    return true;
}

}

Entity Empresa

@Entity
@Table(name = "empresa")
@PrimaryKeyJoinColumn(name = "codigo")
public class Empresa extends Pessoa implements Serializable {

private Long faixa;
private SituacaoRegistro situacaoRegistro;
private Date dataRegistro;
private String nomeFantasia;
private String antigaRazaoSocial;
private BigDecimal valorCapitalMatriz;
private BigDecimal valorCapital;
private String moedaCapital = "R$";
private Date dataCapital;
private Date dataCapitalMatriz;
private String documentoCapital;
private String categoria = "M";
private String tipo;
private String objeto;
private String numeroProcesso;
private Long numeroRegistro;
private Date dataVisto;
private String registroAntigo;
private Boolean entidadeClasse = false;
private List<ResponsabilidadeTecnica> responsaveisAtivos;
private List<ResponsabilidadeTecnica> responsaveisAtivosSemDebito;
private String categoriaDetalhada;
private String tipoDetalhado;
private String entidadeClasseDetalhada;
private String cnpjMatriz;
private String classe;
private List<ResponsabilidadeTecnica> responsaveis;
private List<Socio> socios;
private List<Art> arts;
private Endereco endereco;
private List<ArtWeb> artsWeb;
private Long ultimoAnoPago;
private boolean isenta;
private boolean subJudice;
private String isentaDetalhado;
private String subJudiceDetalhado;
private List<AtividadeEmpresa> atividades;
private String atividadesString;
private String objetoComEspaco;
private boolean convenioGoverno;
private String tipoPessoaJuridica;
private String subtipoPessoaJuridica;
private Boolean isencaoTaxa;
private String documentoIsencaoTaxa;
private Profissional profissionalResponsavelPeloRegistro;

public Empresa() {
    this.isenta = false;
    this.subJudice = false;
}

public Empresa(String codigo) {
    super.setCodigo(codigo);
    this.isenta = false;
    this.subJudice = false;
}

// GETTERS E SETTERS
public Long getFaixa() {
    return this.faixa;
}

public void setFaixa(Long faixa) {
    this.faixa = faixa;
}

@ManyToOne(fetch = FetchType.EAGER)
@JoinColumn(name = "idsituacaoregistro")
public SituacaoRegistro getSituacaoRegistro() {
    return situacaoRegistro;
}

public void setSituacaoRegistro(SituacaoRegistro situacaoRegistro) {
    this.situacaoRegistro = situacaoRegistro;
}

@Temporal(TemporalType.DATE)
@Column(name = "dataregistro", length = 13)
public Date getDataRegistro() {
    return dataRegistro;
}

public void setDataRegistro(Date dataRegistro) {
    this.dataRegistro = dataRegistro;
}

@Column(name = "nomefantasia", length = 100)
public String getNomeFantasia() {
    return nomeFantasia;
}

public void setNomeFantasia(String nomeFantasia) {
    this.nomeFantasia = nomeFantasia;
}

@Column(name = "antigarazaosocial", length = 60)
public String getAntigaRazaoSocial() {
    return antigaRazaoSocial;
}

public void setAntigaRazaoSocial(String antigaRazaoSocial) {
    this.antigaRazaoSocial = antigaRazaoSocial;
}

@Column(name = "valorcapitalmatriz", precision = 15, scale = 3)
public BigDecimal getValorCapitalMatriz() {
    return valorCapitalMatriz;
}

public void setValorCapitalMatriz(BigDecimal valorCapitalMatriz) {
    this.valorCapitalMatriz = valorCapitalMatriz;
}

@Column(name = "valorcapital", precision = 15, scale = 3)
public BigDecimal getValorCapital() {
    return valorCapital;
}

public void setValorCapital(BigDecimal valorCapital) {
    this.valorCapital = valorCapital;
}

@Column(name = "moedacapital", length = 4)
public String getMoedaCapital() {
    return moedaCapital;
}

public void setMoedaCapital(String moedaCapital) {
    this.moedaCapital = moedaCapital;
}

@Temporal(TemporalType.DATE)
@Column(name = "datacapital", length = 13)
public Date getDataCapital() {
    return dataCapital;
}

public void setDataCapital(Date dataCapital) {
    this.dataCapital = dataCapital;
}

@Temporal(javax.persistence.TemporalType.DATE)
public Date getDataCapitalMatriz() {
    return dataCapitalMatriz;
}

public void setDataCapitalMatriz(Date dataCapitalMatriz) {
    this.dataCapitalMatriz = dataCapitalMatriz;
}

@Column(name = "documentocapital", length = 20)
public String getDocumentoCapital() {
    return documentoCapital;
}

public void setDocumentoCapital(String documentoCapital) {
    this.documentoCapital = documentoCapital;
}

@Column(name = "numeroprocesso", length = 13)
public String getNumeroProcesso() {
    return numeroProcesso;
}

public void setNumeroProcesso(String numeroProcesso) {
    this.numeroProcesso = numeroProcesso;
}

public Long getNumeroRegistro() {
    return numeroRegistro;
}

public void setNumeroRegistro(Long numeroRegistro) {
    this.numeroRegistro = numeroRegistro;
}

@Temporal(TemporalType.DATE)
@Column(name = "datavisto", length = 13)
public Date getDataVisto() {
    return dataVisto;
}

public void setDataVisto(Date dataVisto) {
    this.dataVisto = dataVisto;
}

@Column(name = "registroantigo", length = 10)
public String getRegistroAntigo() {
    return registroAntigo;
}

public void setRegistroAntigo(String registroAntigo) {
    this.registroAntigo = registroAntigo;
}

@Column(name = "entidadeclasse")
public Boolean getEntidadeClasse() {
    return entidadeClasse;
}

public void setEntidadeClasse(Boolean entidadeClasse) {
    this.entidadeClasse = entidadeClasse;
}

public String getCnpjMatriz() {
    return cnpjMatriz;
}

public void setCnpjMatriz(String cnpjMatriz) {
    this.cnpjMatriz = cnpjMatriz;
}

@Column(length = 10)
public String getClasse() {
    return classe;
}

public void setClasse(String classe) {
    this.classe = classe;
}

@Column(name = "categoria", length = 1)
public String getCategoria() {
    return this.categoria;
}

public void setCategoria(String categoria) {
    this.categoria = categoria;
}

@Column(name = "tipo", length = 1)
public String getTipo() {
    return this.tipo;
}

public void setTipo(String tipo) {
    this.tipo = tipo;
}

@Lob
@Type(type = "org.hibernate.type.StringClobType")
public String getObjeto() {
    return this.objeto;
}

public void setObjeto(String objeto) {
    this.objeto = objeto;
}

@Transient
public String getCategoriaDetalhada() {
    categoriaDetalhada = "Não Identificado";
    if (categoria.equals("M")) {
        categoriaDetalhada = "Matriz";
    } else if (categoria.equals("F")) {
        categoriaDetalhada = "Filial";
    } else if (categoria.equals("O")) {
        categoriaDetalhada = "Outros";
    }
    return categoriaDetalhada;
}

public void setCategoriaDetalhada(String categoriaDetalhada) {
    this.categoriaDetalhada = categoriaDetalhada;
}

@Transient
public String getTipoDetalhado() {
    tipoDetalhado = "Não Identificado";
    if (tipo != null) {
        if (tipo.equals("1")) {
            tipoDetalhado = "Pública";
        } else if (tipo.equals("2")) {
            tipoDetalhado = "Privada";
        } else if (tipo.equals("3")) {
            tipoDetalhado = "Mista";
        } else if (tipo.equals("4")) {
            tipoDetalhado = "Outras";
        }
    }
    return tipoDetalhado;
}

public void setTipoDetalhado(String tipoDetalhado) {
    this.tipoDetalhado = tipoDetalhado;
}

@Transient
public String getEntidadeClasseDetalhada() {
    entidadeClasseDetalhada = "";
    if ((entidadeClasse != null) && (entidadeClasse)) {
        entidadeClasseDetalhada = "Sim";
    } else {
        entidadeClasseDetalhada = "Não";
    }

    return entidadeClasseDetalhada;
}

public void setEntidadeClasseDetalhada(String entidadeClasseDetalhada) {
    this.entidadeClasseDetalhada = entidadeClasseDetalhada;
}

@OneToMany(mappedBy = "pk.empresa", fetch = FetchType.LAZY)
public List<ResponsabilidadeTecnica> getResponsaveis() {
    if (responsaveis == null) {
        responsaveis = new ArrayList<ResponsabilidadeTecnica>();
    }
    return responsaveis;
}

public void setResponsaveis(List<ResponsabilidadeTecnica> responsaveis) {
    this.responsaveis = responsaveis;
}

@OneToMany(mappedBy = "pk.empresa")
public List<Socio> getSocios() {
    if (socios == null) {
        socios = new ArrayList<Socio>();
    }
    return socios;
}

public void setSocios(List<Socio> socios) {
    this.socios = socios;
}

@OneToMany(mappedBy = "empresaContratada")
public List<Art> getArts() {
    if (arts == null) {
        arts = new ArrayList<Art>();
    }
    return arts;
}

public void setArts(List<Art> arts) {
    this.arts = arts;
}

@Transient
public Endereco getEndereco() {
    return endereco;
}

public void setEndereco(Endereco endereco) {
    this.endereco = endereco;
}

public Long getUltimoAnoPago() {
    return ultimoAnoPago;
}

public void setUltimoAnoPago(Long ultimoAnoPago) {
    this.ultimoAnoPago = ultimoAnoPago;
}

@Transient
public String getObjetoComEspaco() {
    objetoComEspaco = objeto.concat("\n\n");
    return objetoComEspaco;
}

public void setObjetoComEspaco(String objetoComEspaco) {
    this.objetoComEspaco = objetoComEspaco;
}

@OneToMany(mappedBy = "empresaContratada")
public List<ArtWeb> getArtsWeb() {
    if (artsWeb == null) {
        artsWeb = new ArrayList<ArtWeb>();
    }
    return artsWeb;
}

public void setArtsWeb(List<ArtWeb> artsWeb) {
    this.artsWeb = artsWeb;
}

@Transient
public List<ArtWeb> getArtsWebAtivas() {
    List<ArtWeb> artsWebAtivas = new ArrayList<ArtWeb>();
    boolean temArt = false;
    for (ArtWeb aw : getArtsWeb()) {
        for (Art a : getArts()) {
            if (a.getNumeroArt().equals(aw.getNumeroArt())) {
                temArt = true;
            }
        }
        Calendar c = Calendar.getInstance();
        c.setTime(new Date());
        c.add(Calendar.DAY_OF_MONTH, -15);
        if (!temArt
                && aw.getDataElaboracao() != null
                && aw.getDataElaboracao().after(c.getTime())) {
            artsWebAtivas.add(aw);
        }
        temArt = false;
    }
    return artsWebAtivas;
}

@Transient
public List<Art> getArtsRegistradas() {
    List<Art> artsRegistradas = new ArrayList<Art>();
    for (Art a : getArts()) {
        if (a.getDataEntrada() != null) {
            artsRegistradas.add(a);
        }
    }
    return artsRegistradas;
}

@Transient
public List<ArtWeb> getArtsNaoRegistradas() {
    List<ArtWeb> artsNaoRegistradas = new ArrayList<ArtWeb>();
    for (ArtWeb aw : getArtsWeb()) {
        for (Art a : getArts()) {
            if (a.getNumeroArt().equals(aw.getNumeroArt())
                    && a.getDataEntrada() == null) {
                artsNaoRegistradas.add(aw);
            }
        }
    }
    return artsNaoRegistradas;
}

@Transient
public List<Art> getArtsManuaisNaoRegistradas() {
    List<Art> artsManuaisNaoRegistradas = new ArrayList<Art>();
    Boolean temArt = false;
    for (Art a : getArts()) {
        for (ArtWeb aw : getArtsWeb()) {
            if (a.getNumeroArt().equals(aw.getNumeroArt())) {
                temArt = true;
            }
        }
        if (!temArt && a.getDataEntrada() == null) {
            artsManuaisNaoRegistradas.add(a);
        }
    }
    return artsManuaisNaoRegistradas;
}

@Override
public String toString() {
    String resps = "";
    if (!getResponsaveis().isEmpty()) {
        for (ResponsabilidadeTecnica rt : getResponsaveis()) {
            resps += " " + rt.getPk().getInicioResponsabilidadeFormatado() + " - " + rt.getPk().getProfissional().getNome();
        }
    }
    return "Empresa{" + "codigo=" + super.getCodigo() + ";"
            + "cpfCnpj=" + super.getCpfCnpj() + ";"
            + "nome=" + super.getNome() + ";"
            + "email=" + super.getEmail() + ";"
            + "site=" + super.getSite() + ";"
            + "faixa=" + (faixa != null ? faixa.toString() : "VAZIO") + ";"
            + "situacaoRegistro=" + (situacaoRegistro != null ? situacaoRegistro.getDescricao() : "VAZIO") + ";"
            + "dataRegistro=" + dataRegistro + ";"
            + "nomeFantasia=" + nomeFantasia + ";"
            + "antigaRazaoSocial=" + antigaRazaoSocial + ";"
            + "valorCapitalMatriz=" + valorCapitalMatriz + ";"
            + "valorCapital=" + valorCapital + ";"
            + "moedaCapital=" + moedaCapital + ";"
            + "dataCapital=" + dataCapital + ";"
            + "dataCapitalMatriz=" + dataCapitalMatriz + ";"
            + "documentoCapital=" + documentoCapital + ";"
            + "categoria=" + categoria + ";"
            + "tipo=" + tipo + ";"
            + "objeto=" + objeto + ";"
            + "numeroProcesso=" + numeroProcesso + ";"
            + "numeroRegistro=" + numeroRegistro + ";"
            + "dataVisto=" + dataVisto + ";"
            + "registroAntigo=" + registroAntigo + ";"
            + "entidadeClasse=" + entidadeClasse + ";"
            + "categoriaDetalhada=" + categoriaDetalhada + ";"
            + "tipoDetalhado=" + tipoDetalhado + ";"
            + "entidadeClasseDetalhada=" + entidadeClasseDetalhada + ";"
            + "cnpjMatriz=" + cnpjMatriz + ";"
            + "classe=" + classe + ";"
            + "responsaveis=" + resps + ";"
            + "responsavelPeloRegistro=" + profissionalResponsavelPeloRegistro + ";"
            + '}';
}

@Transient
public List<ResponsabilidadeTecnica> getResponsaveisAtivos() {
    List<ResponsabilidadeTecnica> resps = new ArrayList<ResponsabilidadeTecnica>();
    for (ResponsabilidadeTecnica rt : getResponsaveis()) {
        if (rt.getPk().getProfissional().getSituacaoRegistro() != null && rt.getPk().getProfissional().getSituacaoRegistro().getIdSituacaoRegistro().equals("2")) {
            if ((rt.getFimContrato() == null || rt.getFimContrato().after(new Date()))
                    && (rt.getFimResponsabilidade() == null || rt.getFimResponsabilidade().after(new Date()))) {
                resps.add(rt);
            }
        }
    }
    responsaveisAtivos = resps;
    return responsaveisAtivos;
}

public void setResponsaveisAtivos(List<ResponsabilidadeTecnica> responsaveisAtivos) {
    this.responsaveisAtivos = responsaveisAtivos;
}

@Transient
public List<ResponsabilidadeTecnica> getResponsaveisAtivosSemDebito() {
    responsaveisAtivosSemDebito = new ArrayList<ResponsabilidadeTecnica>();
    for (ResponsabilidadeTecnica rt : getResponsaveisAtivos()) {
        if (PessoaUtil.pessoaEmDiaComAnuidade(rt.getPk().getProfissional())) {
            responsaveisAtivosSemDebito.add(rt);
        }
    }
    return responsaveisAtivosSemDebito;
}

public void setResponsaveisAtivosSemDebito(List<ResponsabilidadeTecnica> responsaveisAtivosSemDebito) {
    this.responsaveisAtivosSemDebito = responsaveisAtivosSemDebito;
}

@Transient
public String getItensHint() {
    String retorno = "";
    for (Art a : getArts()) {
        retorno += "Nº ART: " + a.getNumeroArt() + "\nData Entrada: " + a.getDataEntrada() + "\nData Pagamento: " + a.getDataPagamento() + "\nNº Recibo: " + a.getNumeroRecibo()
 //+ "\nValor Obra/Serviço: " + String.format("%5.2f", a.getValorObraServico()) 
                + "\nValor Pago: " + String.format("%5.2f", a.getValorPago())
                + "\nEndereço: " + a.getEnderecoObraServico().getEnderecoDescritivo() + "\nContratante: " + a.getContrato().getIdentificacaoContratante().getNome();
    }
    return retorno;
}

@Transient
public List<Art> getArtsNaoBaixadas() {
    List<Art> artsNaoBaixadas = new ArrayList<Art>();
    for (Art a : getArts()) {
        if (a.getDataBaixa() == null) {
            artsNaoBaixadas.add(a);
        }
    }
    return artsNaoBaixadas;
}

@OneToMany(mappedBy = "pk.empresa")
public List<AtividadeEmpresa> getAtividades() {
    if (atividades == null) {
        atividades = new ArrayList<AtividadeEmpresa>();
    }
    return atividades;
}

public void setAtividades(List<AtividadeEmpresa> atividades) {
    this.atividades = atividades;
}

@Transient
public String getAtividadesString() {
    atividadesString = "";
    for (AtividadeEmpresa ae : atividades) {
        if (!atividadesString.isEmpty()) {
            atividadesString += ", ";
        }
        atividadesString += ae.getPk().getTipoAtividadeEmpresa().getDescricao();
    }
    return atividadesString;
}

public void setAtividadesString(String atividadesString) {
    this.atividadesString = atividadesString;
}

public boolean isIsenta() {
    return isenta;
}

public void setIsenta(boolean isenta) {
    this.isenta = isenta;
}

public boolean isSubJudice() {
    return subJudice;
}

public void setSubJudice(boolean subJudice) {
    this.subJudice = subJudice;
}

@ManyToOne
public Profissional getProfissionalResponsavelPeloRegistro() {
    return profissionalResponsavelPeloRegistro;
}

public void setProfissionalResponsavelPeloRegistro(Profissional profissionalResponsavelPeloRegistro) {
    this.profissionalResponsavelPeloRegistro = profissionalResponsavelPeloRegistro;
}

@Transient
public String getIsentaDetalhado() {
    if (isenta) {
        isentaDetalhado = "Sim";
    } else {
        isentaDetalhado = "Não";
    }
    return isentaDetalhado;
}

public void setIsentaDetalhado(String isentaDetalhado) {
    this.isentaDetalhado = isentaDetalhado;
}

@Transient
public String getSubJudiceDetalhado() {
    if (subJudice) {
        subJudiceDetalhado = "Sim";
    } else {
        subJudiceDetalhado = "Não";
    }
    return subJudiceDetalhado;
}

public void setSubJudiceDetalhado(String subJudiceDetalhado) {
    this.subJudiceDetalhado = subJudiceDetalhado;
}

@Transient
public Socio getSocioPrincipal() {
    Socio socioPrincipal = null;
    BigDecimal cotaAtual = BigDecimal.ZERO;
    for (Socio socio : socios) {
        if (socioPrincipal == null) {
            socioPrincipal = socio;
        } else {
            if (socio.getCota() != null && socio.getCota().compareTo(cotaAtual) == 1 && socio.getDataSaida() == null) {
                cotaAtual = socio.getCota();
                socioPrincipal = socio;
            }
        }
    }
    return socioPrincipal;
}

public boolean isConvenioGoverno() {
    return convenioGoverno;
}

public void setConvenioGoverno(boolean convenioGoverno) {
    this.convenioGoverno = convenioGoverno;
}

@Transient
public boolean isFilial() {
    if (getCodigo().endsWith("TPPI")) {
        return false;
    }
    if (getCategoria() != null && !getCategoria().equals("M")) {
        return true;
    }
    return false;
}

@Transient
public boolean isMatriz() {
    if (!isFilial()) {
        return true;
    }
    return false;
}

@Transient
public boolean isMeiaAnuidade() {
    //Art. 14. A anuidade da pessoa jurídica que possuir filial, agência, sucursal, escritório
    //de representação em circunscrição diferente daquela onde se localiza sua matriz corresponderá à
    //metade do valor previsto para a matriz, desde que não possua capital social destacado.
    if (isFilial()) {
        if (getValorCapital() == null || getValorCapital().compareTo(BigDecimal.ZERO) <= 0) {
            return true;
        }
    }
//    boolean temEnderecoPI = false;
//        for (EnderecoPessoa e : getEnderecosPessoas()) {
//        if (e.getEndereco() != null && e.getEndereco().getUf() != null && e.getEndereco().getUf().equals("PI")) {
//        temEnderecoPI = true;
//   }
//  }
//        if (!temEnderecoPI && !getEnderecosPessoas().isEmpty()) {
//            return true;
//        }
    return false;
}

public String getTipoPessoaJuridica() {
    return tipoPessoaJuridica;
}

public void setTipoPessoaJuridica(String tipoPessoaJuridica) {
    this.tipoPessoaJuridica = tipoPessoaJuridica;
}

public String getSubtipoPessoaJuridica() {
    return subtipoPessoaJuridica;
}

public void setSubtipoPessoaJuridica(String subtipoPessoaJuridica) {
    this.subtipoPessoaJuridica = subtipoPessoaJuridica;
}

public Boolean getIsencaoTaxa() {
    return isencaoTaxaArt;
}

public void setIsencaoTaxa(Boolean isencaoTaxa) {
    this.isencaoTaxa = isencaoTaxa;
}

public String getDocumentoIsencaoTaxaArt() {
    return documentoIsencaoTaxa;
}

public void setDocumentoIsencaoTaxa(String documentoIsencaoTaxa) {
    this.documentoIsencaoTaxa = documentoIsencaoTaxa;
}

Save method Log

  public void salvarRegistro() {
       Object uc = empresaDao.query("SELECT codigo FROM pessoa WHERE codigo LIKE '%PA' ORDER BY codigo DESC LIMIT 1");
   String ultimoNumeroS = uc.toString().substring(0, 10);
   Long ultimoNumero = Long.parseLong(ultimoNumeroS);
   Long proximoNumero = ultimoNumero + 1;
   ultimoNumeroS = StringUtils.leftPad(proximoNumero.toString(), 10, "0");
   String proximoCodigo = ultimoNumeroS + "PA";

   empresa.setCodigo(proximoCodigo);
   empresa.setEmail(empresa.getEmail().toLowerCase());
   empresa.setProfissionalResponsavelPeloRegistro((Profissional) profissionalLogado);

   empresaDao.salvar(empresa);
   enderecoEmpresa.getId().setPessoa(empresa);
   enderecoPessoaDao.salvar(enderecoEmpresa);

   for(ArquivoRegistroOnlineEmpresa aroe : arquivosRegistroOnlineEmpresa) {
        aroe.setEmpresa(empresa);
        arquivoRegistroOnlineEmpresaDao.atualizar(aroe);
   }
  }

Address instance Company

@PostConstruct
public void inicializar() {
    // OCULTADO

    enderecoEmpresa = new EnderecoPessoa();
    empresa = new Empresa();

    obterTiposPessoaJuridica();
    obterCategorias();
}

Daogenericimp

Link to the Daogenericimpl

Stacktrace

Link to the Stacktrace

Personal address

Link to Personal Address Implementation

  • 2

    Good morning, Juliana! Edit your question to include the full stacktrace of the bug, so it’s easier to help

  • @Ivansilva, I edited the question with Stacktrace

  • Let’s see what we find

  • Debug until you find the point that is breaking.

  • Where is the implementation of Addressaadaoimpl?

  • @Ivansilva, I edited the question with the implementation

  • 1

    I’m looking at the stack trace. What’s on line 199 of Daogenericoimp.java? It also helps if it becomes clearer which line 492 of Registroonlineempresacontroller.java is (because there is more than one call to save() there)

  • @In line 199 there is this: getEntityManager(). persist(Object); and on the 492 line of Registroonlineempresacontroller has this: addressPersonDao.save(addressesPress);

  • 1

    If none of the obvious variables of these two lines (addressEmpresa, Object, addressPersonDao, entityManager, etc.) is null, try looking at Enderecoid. I saw that it was built with the default constructor and you called the setPessoa, so it may be missing the setTipoEndereco.

  • You only get the error when you invoke DaoGenericoImp.salvar()? I confess I couldn’t fully understand the code, but if possible, check it out

  • in which class is the public void method save() ?

  • @But that’s what it was. We were missing the setTipoEndereco()

  • @Julianamarques, thanks for coming back here and warning! I will turn the comment into a reply.

  • Thank you very much

Show 9 more comments

1 answer

2


(the problem was solved in the comments, I will create a more complete answer to get organized).

First I looked at the stack trace and saw which lines of its code were pointed (there will be several calls from the framework, so look for your).

I found br.org.web.servicosOnline.controller.RegistroOnlineEmpresaController.salvarRegistro(RegistroOnlineEmpresaController.java:492) and br.org.web.dao.impl.DaoGenericoImp.salvar(DaoGenericoImp.java:199) which, as you informed, contain:

enderecoPessoaDao.salvar(enderecoEmpresa);

and

getEntityManager().persist(object);

Then it is necessary to see if any of these variables is or could be null (under any circumstances), as addressPersonDao, addressEmpresa, the return of getEntityManager() or Object.

Since none is null and the error seems to be within persist(), we have to test another hypothesis: it may be that the primary key is not set. I saw that Addressessoa has a composite key represented by Enderecoid. The constructor used is the default:

new EnderecoPessoa()

what call

new EnderecoId();

The Enderecoid code has not been posted, but if it simply leaves its fields null and they are not set after construction, the resulting object may be invalid for persist(). I found in the code the call to setPessoa(), so I assumed that the lack of setTipoEndereco() (the other compound key field) could be the cause of the error.

And it really was that (as I comment on this issue), so the simplest solution is call setTipoEndereco() before the persist().

Whenever possible, constructors should leave the object in a valid/consistent state. The new EnderecoId() creates an invalid ID that causes Nullpointerexception later if all of its fields are not set manually. Maybe in this case there is nothing to do, but it is worth testing: if persist() accept id null with a "user friendly" error (such as: "It is necessary to set the @Id of the entity before saving"), it is preferable to rearrange the constructs so that an object must have ID null (without calling new Enderecoid()) or having a full and never partial Enderecoid. But of course, maybe this just changes the location of Nullpointerexception, which doesn’t help much. In that case the best thing to do is to post a comment "Don’t forget to set the composite ID! :-)".

Browser other questions tagged

You are not signed in. Login or sign up in order to post.