Java 这个非法辩论的可能原因是什么?
我正试图通过PUT请求更新一个值。似乎有一个IllegalArgumentException/类型不匹配Exception,我似乎不明白为什么 以下是产品模型类: 以下是PUT方法的ProductController代码: 以下是更新产品的updateProduct方法: 以下是我的ProductRepository类: 这是我通过邮递员发出的PUT请求的URL: 这是我试图更新的数据库中的条目: 我得到的信息如下: { 时间戳:2019-03-27T13:53:58.093+0000, 现状:500, 错误:内部服务器错误, 消息:为class testing.models.Product提供的id类型错误。预期:class java.lang.Integer,Get class java.lang.String;嵌套异常为java.lang.IllegalArgumentException:为class testing.models.Product提供的id类型错误。预期:class java.lang.Integer,Get class java.lang.String, 路径:/products/8 } 及 org.hibernate.TypeMismatchException:为class testing.models.Product提供了错误类型的id。应为:类java.lang.Integer,获得类java.lang.String 当我将“id”声明为int时,我不理解如何提供字符串类型。如何解决这个问题?请让我们看看ProductRepository声明,我假设findById方法是错误的,因为它的第一个参数是字符串,但ProductRepository的整数是@Id 更改ProductRepository,如下所示 导入org.springframework.data.repository.crudepository; 导入org.springframework.stereotype.Repository; 进口测试.poc.models.Product; @存储库 公共接口ProductRepository扩展了Crudepository{ }Java 这个非法辩论的可能原因是什么?,java,spring,illegalargumentexception,type-mismatch,Java,Spring,Illegalargumentexception,Type Mismatch,我正试图通过PUT请求更新一个值。似乎有一个IllegalArgumentException/类型不匹配Exception,我似乎不明白为什么 以下是产品模型类: 以下是PUT方法的ProductController代码: 以下是更新产品的updateProduct方法: 以下是我的ProductRepository类: 这是我通过邮递员发出的PUT请求的URL: 这是我试图更新的数据库中的条目: 我得到的信息如下: { 时间戳:2019-03-27T13:53:58.093+0000, 现状
将存储库更改为CRUDEPository,第二个参数必须是实体ID的类型。Integer.ToString将int转换为字符串。您可以添加ProductRepository类吗?Integer.toStringid-我在方法中这样做,因为findById需要一个字符串参数。在编辑中添加了ProductRepository类。更改为公共接口ProductRepository扩展了Crudepository并删除Integer.toString
@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;
@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");
}
public Boolean updateProduct(Product product, int id) {
if(productRepository.findById(Integer.toString(id)) != null) {
productRepository.save(product);
return true;
}
return false;
}
import org.springframework.data.repository.CrudRepository;
import org.springframework.stereotype.Repository;
import testing.poc.models.Product;
@Repository
public interface ProductRepository extends CrudRepository<Product, String>{
}