EntityManager remove-IllegalArgumentException:未知实体:java.lang.Integer]及其根本原因

EntityManager remove-IllegalArgumentException:未知实体:java.lang.Integer]及其根本原因,java,mysql,spring,transactions,entitymanager,Java,Mysql,Spring,Transactions,Entitymanager,我在学习spring时做了这个例子,现在我正在写我自己的项目,我不明白为什么会出现错误:未知实体:java.lang.Integer,当我试图从EntityManager类执行删除操作以从MySQL数据库中删除对象时 Product类(我不会在这里粘贴所有方法,如getter和setter等) import javax.persistence.*; @实体 公共类产品{ @身份证 @GeneratedValue(策略=GenerationType.AUTO) 私有整数id; 私有字符串名称; @

我在学习spring时做了这个例子,现在我正在写我自己的项目,我不明白为什么会出现错误:未知实体:java.lang.Integer,当我试图从EntityManager类执行删除操作以从MySQL数据库中删除对象时

Product类(我不会在这里粘贴所有方法,如getter和setter等)

import javax.persistence.*;
@实体
公共类产品{
@身份证
@GeneratedValue(策略=GenerationType.AUTO)
私有整数id;
私有字符串名称;
@奥内托内
私人产品类型;
私人浮动价格;
私有字符串描述;
//更多代码。。。
}
ProductRepository(我仅显示删除方法)

import javax.persistence.EntityManager;
导入javax.persistence.PersistenceContext;
导入javax.transaction.Transactional;
公共类DBProductRepository实现ProductRepository{
@持久上下文
私人实体管理者实体管理者;
@凌驾
@交易的
公共产品(整数id){
entityManager.remove(id);
}
//更多代码。。。
}
ProductService(我仅显示删除方法)

@服务
公共类产品服务{
公共产品(整数id){
productRepository.deleteProduct(id);
}
//更多代码。。。
}
产品控制器

@控制器
公共类产品控制器{
@请求映射(“/products”)
公共字符串getProducts(模型){
List products=productService.getAllProducts();
model.addAttribute(“产品”,产品);
退回“产品”;
}
@RequestMapping(value=“/product/delete/{id}”)
公共字符串deleteProduct(@PathVariable(“id”)整数id){
productService.deleteProduct(id);
返回“重定向:/products”;
}
//更多代码。。。
}
products.html


产品清单
身份证件
类型
名称
价格
描述
当我在站点上单击“删除”时,localhost:8080/我得到的产品: “白标错误页

此应用程序没有/error的显式映射,因此您将其视为回退。 2019年9月16日星期一17:41:45 CEST 出现意外错误(类型=内部服务器错误,状态=500)。 未知实体:java.lang.Integer“

在控制台中: “2019-09-16 17:41:45.175错误7792---[nio-8080-exec-4]o.a.c.c.c.[/].[dispatcherServlet]:路径[]上下文中Servlet[dispatcherServlet]的Servlet.service()引发异常[请求处理失败;嵌套异常为java.lang.IllegalArgumentException:未知实体:java.lang.Integer],根本原因为”

我做错了什么?

将实体实例作为参数。您正在传递
整数

改为:

@Override
@Transactional
public void deleteProduct(Product product) {
    entityManager.remove(product);
}

非常感谢它能起作用!我不明白为什么课程中的示例处理Integer而不是Object。在控制器中,我以这种方式传递对象以删除(它能起作用),但我能找出这是否是正确的方法吗?它能解决得更好吗?@RequestMapping(value=“/product/delete/{id}”)公共字符串deleteProduct(@PathVariable(“id”)整数id){productService.deleteProduct(productService.getProduct(id));返回“重定向:/products”;@misza使用
POST
方法来完成。除此之外,我认为没有任何问题。