Я пытаюсь обновить значение с помощью запроса PUT.Кажется, есть исключение IllegalArgumentException / TypeMismatchException, которое я не могу понять, почему.
Вот класс модели Product :
@Table(name="product")
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
private int price;
private String vendor;
private String description;
private Boolean returnPolicy;
Вот код ProductController для метода PUT:
@Autowired
private ProductService productService;
@RequestMapping(method = RequestMethod.PUT, value = "/products/{id}")
public void updateProduct(@RequestBody Product product, @PathVariable int id) {
res = productService.updateProduct(product, id);
System.out.println(res ? "Successful" : "Unsuccessful");
}
Вот метод updateProduct для обновления продукта:
public Boolean updateProduct(Product product, int id) {
if(productRepository.findById(Integer.toString(id)) != null) {
productRepository.save(product);
return true;
}
return false;
}
Вот мой класс ProductRepository:
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import testing.poc.models.Product;
@Repository
public interface ProductRepository extends CrudRepository<Product, String>{
}
Это URL для моего запроса PUT через Почтальона:
http://localhost:8080/products/8
Это запись в БД, которую я пытаюсь обновить: ![entry](https://i.imgur.com/zkqapYW.png)
Сообщение, которое я получаю, выглядит следующим образом:
{"отметка времени": "2019-03-27T13: 53: 58.093 + 0000", "статус": 500, "ошибка": "Внутренняя ошибка сервера", "сообщение": "Указан идентификаторневерный тип для класса testing.models.Product. Ожидается: класс java.lang.Integer, получен класс java.lang.String; вложенное исключение - java.lang.IllegalArgumentException: указан идентификатор неверного типа fили класс тестирования. модели. Продукт.Ожидаемый: класс java.lang.Integer, получил класс java.lang.String "," path ":" / products / 8 "}
и
org.hibernate.TypeMismatchException: предоставлен идентификатор неправильного типа для класса testing.models.Product. Ожидаемый: класс java.lang.Integer, получил класс java.lang.String
Я не понимаю, какСтроковый тип предоставляется, когда я везде объявил id как int. Как это можно исправить?