Oi amigos quando eu chamo o método realizar depósito, ocorre esse erro:
Exception in thread "main" java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because "numero" is null
at br.com.alura.bytebank.domain.conta.ContaDAO.alterar(ContaDAO.java:115)
at br.com.alura.bytebank.domain.conta.ContaService.realizarDeposito(ContaService.java:62)
at br.com.alura.bytebank.BytebankApplication.realizarDeposito(BytebankApplication.java:134)
at br.com.alura.bytebank.BytebankApplication.main(BytebankApplication.java:36)
Process finished with exit code 1
mas eu não estrou entendendo onde o numero fica "null", os outro métodos que eu fiz até agora funcionaram normal, e se eu digito o numero da conta errado ele funciona também!!
// Esse é o metodo para depositar
public void realizarDeposito(Integer numeroDaConta, BigDecimal valor) {
var conta = buscarContaPorNumero(numeroDaConta);
if (valor.compareTo(BigDecimal.ZERO) <= 0) {
throw new RegraDeNegocioException("Valor do deposito deve ser superior a zero!");
}
Connection conn = connection.recuperarConexao();
new ContaDAO(conn).alterar(conta.getNumero(), valor);
}
//Esse é o método alterar
public void alterar(Integer numero, BigDecimal valor) {
PreparedStatement ps;
String sql = "UPDATE conta SET saldo = ? WHERE numero = ?";
try {
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1, valor);
ps.setInt(2, numero);
ps.execute();
ps.close();
conn.close();
} catch (SQLException e) {
throw new RuntimeException(e);
}
}