Ir ao conteúdo
  • Cadastre-se

não consigo encontrar esse erro java.lang.RuntimeException:


Posts recomendados

Ola pessoal!

estou precisando de uma ajuda de vocês, não consigo encontra esse erro que me aparece no eclipse quando vou inserir uma informação no banco de dados que é msql.

 

ago 02, 2017 2:00:07 PM org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [springmvc] in context with path [/fj21-tarefas] threw exception [Request processing failed; nested exception is java.lang.RuntimeException: java.sql.SQLException: java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long] with root cause
java.lang.ClassCastException: java.math.BigInteger cannot be cast to java.lang.Long
    at com.mysql.jdbc.ConnectionImpl.buildCollationMapping(ConnectionImpl.java:1019)
    at com.mysql.jdbc.ConnectionImpl.initializePropsFromServer(ConnectionImpl.java:3600)
    at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2541)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2311)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:834)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:416)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:347)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at br.com.caelum.tarefas.ConnectionFactory.getConnection(ConnectionFactory.java:18)
    at br.com.caelum.tarefas.dao.JdbcTarefaDao.<init>(JdbcTarefaDao.java:19)
    at br.com.caelum.tarefas.controller.TarefasController.adiciona(TarefasController.java:18)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:214)
    at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)
    at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:748)
    at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:689)
    at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:83)
    at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:945)
    at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:876)
    at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:931)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:833)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
    at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:807)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:51)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1041)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:603)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    at java.lang.Thread.run(Unknown Source)

Link para o comentário
Compartilhar em outros sites

@maycon1

 

O erro está bem descrito nesse stack

 

Java.math.BigInteger cannot be cast to java.lang.Long

Alguma variável de algum objeto é do tipo BigInteger e você está tentando gravar ela no banco como um tipo Long através de um cast direto.

 

Para você gravar em banco um valor do tipo BigInteger como Long, faça

 

suaVariavelBigInteger.longValue();

Isso deve resolver seu problema.

Link para o comentário
Compartilhar em outros sites

18 horas atrás, TwistedSoul disse:

@maycon1

 

O erro está bem descrito nesse stack

 


Java.math.BigInteger cannot be cast to java.lang.Long

Alguma variável de algum objeto é do tipo BigInteger e você está tentando gravar ela no banco como um tipo Long através de um cast direto.

 

Para você gravar em banco um valor do tipo BigInteger como Long, faça

 


suaVariavelBigInteger.longValue();

Isso deve resolver seu problema.

 

 

Ola eu sou novo no java.

Só tem um lugar que eu coloquei o bigint que foi no banco de dados , olhei tudo nas classes não encontrei nada que poderia esta ocasionando esse erro.Vou manda as classes para você da uma olha e ve onde mais ou menos esta esse erro.

 

package br.com.caelum.tarefas.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import br.com.caelum.tarefas.dao.JdbcTarefaDao;
import br.com.caelum.tarefas.modelo.Tarefa;

@Controller
public class TarefasController {
    @RequestMapping("novaTarefa")
    public String form(){
        return "tarefa/formulario";
    }
    
    @RequestMapping("adicionaTarefa")
    public String adiciona(Tarefa tarefa){
        JdbcTarefaDao dao = new JdbcTarefaDao();
        dao.adiciona(tarefa);
        return "tarefa/adicionado";
    }

}
 

classe do DAO

 

package br.com.caelum.tarefas.dao;

import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import br.com.caelum.tarefas.modelo.Tarefa;
import br.com.caelum.tarefas.ConnectionFactory;

public class JdbcTarefaDao {
    private final Connection connection;

    public JdbcTarefaDao() {
        this.connection = new ConnectionFactory().getConnection();
    }

    public void adiciona(Tarefa tarefa) {
        String sql = "insert into tarefas (descricao, finalizado) values (?,?)";
        PreparedStatement stmt;
        try {
            stmt = connection.prepareStatement(sql);
            stmt.setString(1, tarefa.getDescricao());
            stmt.setBoolean(2, tarefa.isFinalizado());
            stmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void remove(Tarefa tarefa) {

        if (tarefa.getId() == null) {
            throw new IllegalStateException("Id da tarefa não deve ser nula.");
        }

        String sql = "delete from tarefas where id = ?";
        PreparedStatement stmt;
        try {
            stmt = connection.prepareStatement(sql);
            stmt.setLong(1, tarefa.getId());
            stmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void altera(Tarefa tarefa) {
        String sql = "update tarefas set descricao = ?, finalizado = ?, dataFinalizacao = ? where id = ?";
        PreparedStatement stmt;
        try {
            stmt = connection.prepareStatement(sql);
            stmt.setString(1, tarefa.getDescricao());
            stmt.setBoolean(2, tarefa.isFinalizado());
            stmt.setDate(3, tarefa.getDataFinalizacao() != null ? new Date(
                    tarefa.getDataFinalizacao().getTimeInMillis()) : null);
            stmt.setLong(4, tarefa.getId());
            stmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public List<Tarefa> lista() {
        try {
            List<Tarefa> tarefas = new ArrayList<Tarefa>();
            PreparedStatement stmt = this.connection
                    .prepareStatement("select * from tarefas");

            ResultSet rs = stmt.executeQuery();

            while (rs.next()) {
                // adiciona a tarefa na lista
                tarefas.add(populaTarefa(rs));
            }

            rs.close();
            stmt.close();

            return tarefas;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public Tarefa buscaPorId(Long id) {

        if (id == null) {
            throw new IllegalStateException("Id da tarefa não deve ser nula.");
        }

        try {
            PreparedStatement stmt = this.connection
                    .prepareStatement("select * from tarefas where id = ?");
            stmt.setLong(1, id);

            ResultSet rs = stmt.executeQuery();

            if (rs.next()) {
                return populaTarefa(rs);
            }

            rs.close();
            stmt.close();

            return null;
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    public void finaliza(Long id) {

        if (id == null) {
            throw new IllegalStateException("Id da tarefa não deve ser nula.");
        }

        String sql = "update tarefas set finalizado = ?, dataFinalizacao = ? where id = ?";
        PreparedStatement stmt;
        try {
            stmt = connection.prepareStatement(sql);
            stmt.setBoolean(1, true);
            stmt.setDate(2, new Date(Calendar.getInstance().getTimeInMillis()));
            stmt.setLong(3, id);
            stmt.execute();
        } catch (SQLException e) {
            throw new RuntimeException(e);
        }
    }

    private Tarefa populaTarefa(ResultSet rs) throws SQLException {
        Tarefa tarefa = new Tarefa();

        // popula o objeto tarefa
        tarefa.setId(rs.getLong("id"));
        tarefa.setDescricao(rs.getString("descricao"));
        tarefa.setFinalizado(rs.getBoolean("finalizado"));

        // popula a data de finalizacao da tarefa, fazendo a conversao
        Date data = rs.getDate("dataFinalizacao");
        if (data != null) {
            Calendar dataFinalizacao = Calendar.getInstance();
            dataFinalizacao.setTime(data);
            tarefa.setDataFinalizacao(dataFinalizacao);
        }
        return tarefa;
    }
}

 

classe tarefas 

 

package br.com.caelum.tarefas.modelo;

import java.util.Calendar;

public class Tarefa {
    private Long id;
    private String descricao;
    private boolean finalizado;
    private Calendar dataFinalizacao;

    public Long getId() {
        return id;
    }

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

    public String getDescricao() {
        return descricao;
    }

    public void setDescricao(String descricao) {
        this.descricao = descricao;
    }

    public boolean isFinalizado() {
        return finalizado;
    }

    public void setFinalizado(boolean finalizado) {
        this.finalizado = finalizado;
    }

    public Calendar getDataFinalizacao() {
        return dataFinalizacao;
    }

    public void setDataFinalizacao(Calendar dataFinalizacao) {
        this.dataFinalizacao = dataFinalizacao;
    }

}

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...