Hibernate并尝试构建一个简单的功能,我们可以通过ID搜索产品。Hibernate有一个inbuit功能,可以通过ID搜索实体。我尝试了同样的方法,但我得到了“java.lang.NoSuchMethodException”。
MyController.java :
@GetMapping(value = "/getProducts/{id}" , produces ="application/json")
public ResponseEntity<Product> display(@PathVariable int id) {
Product products = productServiceImp.getAllProducts(id);
return ResponseEntity.ok(products);
MyProductServiceImp:
@Override
public Product getAllProducts(int product_id ) {
return productRepository.getById(product_id );
}
MyProductRepository:
@Repository
public interface ProductRepository extends JpaRepository<Product, Integer> {
}
Schema of Product table : (product_id, desciption,display_name, qty, amount)
当我尝试通过 Postman curl --location --request GET 'http://localhost:8080/admin/getProducts/1调用API时,我发现它是由以下原因引起的:java.lang.NoSuchMethodException: com.Project.OrderProcessing.OrderProcessing.Entity.Product$HibernateProxy$zAdAYVvM.<init>().I am unable to understand reason behind it
2条答案
按热度按时间3wabscal1#
尝试
findById
,因为getById
已弃用。未经测试,但类似于:我的产品服务导入:
产品.java
您的
@Repository
接口看起来很好。根据您需要做什么,您的控制器有不同的变体。但现在,只需尝试调用您的服务方法,这样您就知道您从数据库获得了结果并从那里开始工作。为了保持一致性,通常使用驼峰大小写,然后你可以在仓库的接口中使用Spring约定,这样你的方法看起来就像
findAllByDisplayName()
而不是findAllByDisplay_Name()
,Spring会为你处理查询。还要注意的是,您可能不会使用一个产品ID来获取所有产品,对吗?因此,它应该仅称为
getProduct
或findProduct
或getProductById
或findProductById
。sqxo8psd2#
我已经用FindbyID代替了GetById,它起作用了!!