GRAVE: Servlet.service() for servlet [springmvc] in context with path

4 respostas
java
M

alguém pode me ajudar, não estou conseguindo passa as informações do meu formulário para o banco de dados mysql, o erro é esse:

jul 29, 2017 12:36:26 PM org.apache.catalina.core.StandardWrapperValve invoke

GRAVE: Servlet.service() for servlet [springmvc] in context with path [/tarefa] 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.(ConnectionImpl.java:834)

at com.mysql.jdbc.JDBC4Connection.(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.(JdbcTarefaDao.java:19)

at br.com.caelum.tarefas.controller.TarefasController.adiciona(TarefasController.java:19)

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:312)

at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)

at java.lang.Thread.run(Unknown Source)

4 Respostas

B

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

Parece que você está querendo inserir um objeto do tipo BigInteger para um campo do tipo Long no MySQL ou tentando fazer a conversão de BigInteger para Long.

Acho que é isso.

M

pior que não, criei uma tabela com o campo bigint auto-intencrement no mysql não estou fazendo select e sim um insert, sou iniciante em java e na programação.

B

Pode postar a classe onde está o PreparedStatement do insert?

Acredito ser essa classe “springmvc”, ou não?

M

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() {
	try {
		this.connection = new ConnectionFactory().getConnection();
	} catch (SQLException e) {
		throw new RuntimeException(e);
	}
}

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;
}

}

Criado 29 de julho de 2017
Ultima resposta 31 de jul. de 2017
Respostas 4
Participantes 2