REST API调用:缺少类型为Long的方法参数的URI模板变量“productoId”

时间:2017-10-26 06:38:39

标签: spring rest spring-boot

我试图在Spring启动数据库(http://localhost:8180/products/2)中进行查询,服务器响应:

  

此应用程序没有/ error的显式映射,因此您将此视为后备。

     

Thu Oct 26 01:29:12 COT 2017出现意外错误   (type = Internal Server Error,status = 500)。缺少URI模板   long类型的方法参数的变量'productoId'

这个界面

package com.beitech.orders.repository;

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;

import com.beitech.orders.model.Product;

public interface ProductJpaRepository extends JpaRepository<Product, Long> {

    Product findByProductoId(Long productoId);

    @Query(value = "SELECT * FROM PRODUCT WHERE PRODUCTO_ID = ?1", nativeQuery = true)
    Product findByproductoId3(Long productoId);

}

这是控制器:

package com.beitech.orders.controller;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.beitech.orders.model.Product;
import com.beitech.orders.repository.ProductJpaRepository;

@RestController
@RequestMapping("/products")
public class ProductController {

     @Autowired
     private ProductJpaRepository productJpaRepository;

     @GetMapping(value = "/allProducts")
     public List<Product> findAll(){
         return productJpaRepository.findAll(); 
     }

     @GetMapping(value = "/{productId}")
     public Product findByProductoId(@PathVariable final Long productoId){
         return productJpaRepository.findByProductoId(productoId); 
     }
}

1 个答案:

答案 0 :(得分:1)

您已定义

@GetMapping(value = "/{productId}")

@PathVariable final Long productoId){

productIdproductoId之间存在不匹配。如果您希望productId绑定到Long productoId,则必须声明@PathVariable(name="productId")或者只需将productoId重命名为productId,反之亦然。