Olá pessoal! Não consigo corrigir um problema que ocorre ao tentar salvar uma informação. Tenho outro projeto que funciona e mesmo tentando comparar um com o outro, não descobri qual é o problema.
A mensagem de erro que aparece é a seguinte:
Failed to convert from type [java.lang.String] to type [java.lang.Long] for value 'Cris'; nested exception is java.lang.NumberFormatException: For input string: "Cris"
O código completo está no github: (GitHub - IvoLeonardo/Agenda: Projeto que continha erro, mas que foi corrigido.)
Grato.
Abaixo segue um pouco dos códigos.
package br.com.ilsc.agenda.modelo;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name = "contatos")
public class Contato {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String contato;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getContato() {
return contato;
}
public void setContato(String contato) {
this.contato = contato;
}
}
package br.com.ilsc.agenda.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.ModelAndView;
import br.com.ilsc.agenda.modelo.Contato;
import br.com.ilsc.agenda.repository.ContatoRepository;
@Controller
public class IndexController {
@Autowired
private ContatoRepository contatoRepository;
@GetMapping("/")
public ModelAndView inicio() {
ModelAndView mv = new ModelAndView("index");
mv.addObject("contatoObj", new Contato());
mv.addObject("contatos", contatoRepository.findAll());
return mv;
}
@PostMapping("salvarContato")
public ModelAndView salvar(Contato contato) {
contatoRepository.save(contato);
ModelAndView mv = new ModelAndView("index");
mv.addObject("contatoObj", new Contato());
mv.addObject("contatos", contatoRepository.findAll());
return mv;
}
}
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="utf-8">
<title>Index</title>
</head>
<body>
<form action="salvarContato" method="post" th:object="${contatoObj}">
<input type="hidden" name="id" th:field="*{id}">
<label>Nome</label>
<input type="text" name="contato" th:field="*{contato}">
<input type="submit" value="salvar">
</form>
<table>
<tr>
<th>Código</th><th>Nome do contato</th>
</tr>
<tr th:each="c : ${contatos}">
<td th:text="${c.id}"></td>
<td th:text="${c.contato}"></td>
</tr>
</table>
</body>
</html>
package br.com.ilsc.agenda.repository;
import org.springframework.data.jpa.repository.JpaRepository;
import br.com.ilsc.agenda.modelo.Contato;
public interface ContatoRepository extends JpaRepository<Contato, Long> {
}
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>br.com.ilsc</groupId>
<artifactId>agenda</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>agenda</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>