Como setar data com valor null?[RESOLVIDO]

14 respostas
java
G

Estou tentando buscar do banco de dados uma data com valor null e setar no meu objeto mas não estou tendo sucesso porque ao tentar pegar o Timestamp do ArrayList ele da NullPointerException.
obs: já tentei verificar se é diferente de null e se colocar no try catch não instancia o objeto ef.

public ArrayList filtrarEpiFuncionario(String query) throws SQLException{

Connection con = ConexaoBanco.getConexao();

Statement stat = con.createStatement();
try{
        String sql;
        sql = "select * from vcatalogepi_pfunc" + query;
        
        ResultSet rs = stat.executeQuery(sql);
        ArrayList<EpiFuncionario> efa = new ArrayList<>();  
        
        while (rs.next()) {
            EpiFuncionario ef = new EpiFuncionario();
            ef.setCodColigada(rs.getShort("CODCOLIGADA"));
            ef.setChapa(rs.getString("CHAPA"));
            ef.setCodEpi(rs.getString("CODEPI"));
            ef.setDataRetirada(rs.getTimestamp("DATARETIRADA").toLocalDateTime());
            //erro recebendo valor nulo - NullPointerException
            rs.getTimestamp("DATARETIRADA").toLocalDateTime();
            ef.setDataDevolucao(null);
            ef.setCa(rs.getString("CA"));
            ef.setRegistroRetirada(rs.getString("REGISTRORETIRADA"));
            ef.setRegistroDevolucao(rs.getString("REGISTRODEVOLUCAO"));
            
            efa.add(ef);
        }
        return efa;
    }catch(SQLException se){
        throw new SQLException("Erro ao buscar dados do histórico! " + se.getMessage());  
    }finally{
        con.close();
        stat.close();
    }//fecha finally
}//fecha filtrarEpiFuncionario

14 Respostas

R

Poste o erro completo e o código do EpiFuncionario

G
package model;

import java.time.LocalDateTime;

/**
 *
 * @author guilherme.oliveira
 */
public class EpiFuncionario {

    private short codColigada;
    private String chapa;
    private String codEpi;
    private LocalDateTime dataRetirada;
    private LocalDateTime dataDevolucao;
    private String ca;
    private String registroRetirada;
    private String registroDevolucao;

    public EpiFuncionario() {
    }

    public EpiFuncionario(short codColigada, String chapa, String codEpi, LocalDateTime dataRetirada, LocalDateTime dataDevolucao, String ca, String registroRetirada, String registroDevolucao) {
        this.codColigada = codColigada;
        this.chapa = chapa;
        this.codEpi = codEpi;
        this.dataRetirada = dataRetirada;
        this.dataDevolucao = dataDevolucao;
        this.ca = ca;
        this.registroRetirada = registroRetirada;
        this.registroDevolucao = registroDevolucao;
    }

    public short getCodColigada() {
        return codColigada;
    }

    public void setCodColigada(short codColigada) {
        this.codColigada = codColigada;
    }

    public String getChapa() {
        return chapa;
    }

    public void setChapa(String chapa) {
        this.chapa = chapa;
    }

    public String getCodEpi() {
        return codEpi;
    }

    public void setCodEpi(String codEpi) {
        this.codEpi = codEpi;
    }

    public LocalDateTime getDataRetirada() {
        return dataRetirada;
    }

    public void setDataRetirada(LocalDateTime dataRetirada) {
        this.dataRetirada = dataRetirada;
    }

    public LocalDateTime getDataDevolucao() {
        return dataDevolucao;
    }

    public void setDataDevolucao(LocalDateTime dataDevolucao) {
        this.dataDevolucao = dataDevolucao;
    }

    public String getCa() {
        return ca;
    }

    public void setCa(String ca) {
        this.ca = ca;
    }

    public String getRegistroRetirada() {
        return registroRetirada;
    }

    public void setRegistroRetirada(String registroRetirada) {
        this.registroRetirada = registroRetirada;
    }

    public String getRegistroDevolucao() {
        return registroDevolucao;
    }

    public void setRegistroDevolucao(String registroDevolucao) {
        this.registroDevolucao = registroDevolucao;
    }

    @Override
    public String toString() {
        return "C�digo coligada: " + codColigada
                + "Chapa: " + chapa + "C�digo de EPI: " + codEpi
                + "Data da retirada: " + dataRetirada
                + "Data da devolucao: " + dataDevolucao
                + "CA: " + ca
                + "Registro da retirada: " + registroRetirada
                + "Registro da devolucao: " + registroDevolucao;
    }

}
G

O erro completo vc diz do console?

R

Isso;

G
Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at dao.EpiFuncionarioDAO.filtrarEpiFuncionario(EpiFuncionarioDAO.java:101)

at servicos.EpiFuncionarioServicos.filtarEpiFuncionario(EpiFuncionarioServicos.java:33)

at view.UIControleEpi.filtrarEpiFuncionario(UIControleEpi.java:648)

at view.UIControleEpi.jtfHCodEpiKeyReleased(UIControleEpi.java:936)

at view.UIControleEpi.access$900(UIControleEpi.java:33)

at view.UIControleEpi$10.keyReleased(UIControleEpi.java:347)

at java.awt.Component.processKeyEvent(Component.java:6494)

at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)

at java.awt.Component.processEvent(Component.java:6310)

at java.awt.Container.processEvent(Container.java:2237)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)

at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)

at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)

at java.awt.Component.dispatchEventImpl(Component.java:4760)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

where CODEPI like %00%

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at dao.EpiFuncionarioDAO.filtrarEpiFuncionario(EpiFuncionarioDAO.java:101)

at servicos.EpiFuncionarioServicos.filtarEpiFuncionario(EpiFuncionarioServicos.java:33)

at view.UIControleEpi.filtrarEpiFuncionario(UIControleEpi.java:648)

at view.UIControleEpi.jtfHCodEpiKeyReleased(UIControleEpi.java:936)

at view.UIControleEpi.access$900(UIControleEpi.java:33)

at view.UIControleEpi$10.keyReleased(UIControleEpi.java:347)

at java.awt.Component.processKeyEvent(Component.java:6494)

at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)

at java.awt.Component.processEvent(Component.java:6310)

at java.awt.Container.processEvent(Container.java:2237)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)

at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)

at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)

at java.awt.Component.dispatchEventImpl(Component.java:4760)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

where CODEPI like %001%

Exception in thread AWT-EventQueue-0 java.lang.NullPointerException

at dao.EpiFuncionarioDAO.filtrarEpiFuncionario(EpiFuncionarioDAO.java:101)

at servicos.EpiFuncionarioServicos.filtarEpiFuncionario(EpiFuncionarioServicos.java:33)

at view.UIControleEpi.filtrarEpiFuncionario(UIControleEpi.java:648)

at view.UIControleEpi.jtfHCodEpiKeyReleased(UIControleEpi.java:936)

at view.UIControleEpi.access$900(UIControleEpi.java:33)

at view.UIControleEpi$10.keyReleased(UIControleEpi.java:347)

at java.awt.Component.processKeyEvent(Component.java:6494)

at javax.swing.JComponent.processKeyEvent(JComponent.java:2832)

at java.awt.Component.processEvent(Component.java:6310)

at java.awt.Container.processEvent(Container.java:2237)

at java.awt.Component.dispatchEventImpl(Component.java:4889)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1954)

at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:806)

at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1074)

at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:945)

at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:771)

at java.awt.Component.dispatchEventImpl(Component.java:4760)

at java.awt.Container.dispatchEventImpl(Container.java:2295)

at java.awt.Window.dispatchEventImpl(Window.java:2746)

at java.awt.Component.dispatchEvent(Component.java:4711)

at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)

at java.awt.EventQueue.access$500(EventQueue.java:97)

at java.awt.EventQueue$3.run(EventQueue.java:709)

at java.awt.EventQueue$3.run(EventQueue.java:703)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)

at java.awt.EventQueue$4.run(EventQueue.java:731)

at java.awt.EventQueue$4.run(EventQueue.java:729)

at java.security.AccessController.doPrivileged(Native Method)

at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)

at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)

at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)

at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
G

Esse erro da quando tento filtrar

G

Quando eu seto direto o valor no null ele funciona por exemplo ef.setDataDevolucao(null);

R

Essa linha não dá erro, certo?

Porque eu também fiz o teste aqui e tanto o timestamp quanto o LocalDateTime aceitam null como parâmetro.

G

Não essa linha não da erro porque ela nunca irá receber null na minha aplicação

G

Rodrigo vlw pela ajuda ai cara eu resolvi, eu coloquei um try catch assim:

try{
        ef.setDataDevolucao(rs.getTimestamp("DATADEVOLUCAO").toLocalDateTime());
 }catch(NullPointerException ne){
         ef.setDataDevolucao(null);
  }
R

Apesar de ter resolvido, cuidado, pois qualquer outros erro de NullPointerException vai ser capturado e tratado da forma que você fez.

Eu dei uma pesquisada mas não encontrei nada a respeito, mas não recomendo que faça dessa forma.

G

Bom de qualquer forma obrigado, vou seguir fazendo pesquisas para ver se acho uma solução melhor.

B
ef.setDataDevolucao(rs.getTimestamp("DATADEVOLUCAO") != null 
    ? rs.getTimestamp("DATADEVOLUCAO").toLocalDateTime() 
    : null);
S

Gambiarra, pra quê?
Testa se o TimeStamp é null pôxa.

TimeStamp ts = rs.getTimestamp("DATADEVOLUCAO");
ef.setDataDevolucao(ts == null ? null : ts.toLocalDateTime());
Criado 8 de março de 2018
Ultima resposta 3 de set. de 2020
Respostas 14
Participantes 4