为什么get请求在Spring Boot中给出空响应?

时间:2020-07-22 05:36:08

标签: spring-boot rest web-services jpa spring-data-jpa

我正在尝试制作简单的rest服务,该服务可以使用JPA将数据保存到h2数据库并作为响应显示数据,但是当我尝试POST请求时,即使检查h2控制台,保存的数据也为空。 ,输入的ID已保存,因为它使用@GeneratedValue,但other为null。另外当我想尝试GET请求时,响应给了我null json

@Entity
public class MS_Product {
    
    @GeneratedValue
    @Id
    @Getter
    private long productId;
    
    @Getter @Setter
    private String productName;
    
    @Getter @Setter
    private int productPrice;
    
    @Getter @Setter
    private int productStock;
    
    @UpdateTimestamp
    @Getter
    private LocalDateTime updatedDate;
    
    
    
    protected MS_Product() {
        
    
    }

    public MS_Product(long productId, String productName, int productPrice, int productStock, LocalDateTime updatedDate) {
        super();
        this.productId = productId;
        this.productName = productName;
        this.productPrice = productPrice;
        this.productStock = productStock;
        this.updatedDate = updatedDate;
    }
    
    
    
    

}

    public interface MS_ProductRepository extends JpaRepository<MS_Product, Long>{
    
    }

    @RestController
    public class MS_ProductController {
        
    
        @Autowired
        MS_ProductRepository productRepository;
        
        @GetMapping("/products")
        public ResponseEntity<MS_Product> findAllProduct(){
            try {
                List<MS_Product> products = productRepository.findAll();
                
                return new ResponseEntity(products, HttpStatus.OK);
            }catch(Exception e){
                return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
            }
        }
        
        @PostMapping("/products")
        public ResponseEntity<MS_Product> createProduct(@RequestBody MS_Product product){
            
            try {
                MS_Product savedProduct = productRepository.save(product);
                
                return new ResponseEntity(product, HttpStatus.CREATED);
            }catch(Exception e){
                return new ResponseEntity(null, HttpStatus.EXPECTATION_FAILED);
            }
        }
    }

enter image description here

enter image description here

3 个答案:

答案 0 :(得分:0)

尝试

@Entity(name="your_table_name")
public class Student {

答案 1 :(得分:0)

根据设计,内存数据库是易失性的,当我们重新启动应用程序时,数据将丢失。

我们可以通过使用基于文件的存储来更改该行为。为此,我们需要更新spring.datasource.url:

spring.datasource.url=jdbc:h2:file:/data/demo

参考:https://www.baeldung.com/spring-boot-h2-database

答案 2 :(得分:0)

您需要

@Column(name = "productId")

您需要映射到表列的每个字段上