为什么我的查询 return empry list 并没有给出错误? Java Spring Jpa 存储库

Why my query return empry list and gives no error? Java Spring Jpa Repository

这是我的实体 class:

package com.test.model;

import java.sql.Timestamp;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

import com.fasterxml.jackson.annotation.JsonFormat;

@Entity
@Table(name = "Ergebnisse")
public class Ergebnisse{
    
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    
    @Column(name = "messwert")
    private double Messwert;
    
    @Column(name = "einheit")
    private String Einheit;
    
    @Column(name = "material")
    private String Material;
    
    @Column(name = "laboreingangsdatum")
    @JsonFormat(pattern="yyyy-MM-dd")
    private Timestamp Laboreingangsdatum;
    
    @Column(name = "status")
    private String Status;
    
    @Column(name = "parameter")
    private String Parameter;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getMesswert() {
        return Messwert;
    }

    public void setMesswert(double messwert) {
        Messwert = messwert;
    }

    public String getEinheit() {
        return Einheit;
    }

    public void setEinheit(String einheit) {
        Einheit = einheit;
    }

    public String getMaterial() {
        return Material;
    }

    public void setMaterial(String material) {
        Material = material;
    }

    public Timestamp getLaboreingangsdatum() {
        return Laboreingangsdatum;
    }

    public void setLaboreingangsdatum(Timestamp laboreingangsdatum) {
        Laboreingangsdatum = laboreingangsdatum;
    }

    public String getStatus() {
        return Status;
    }

    public void setStatus(String status) {
        Status = status;
    }

    public String getParameter() {
        return Parameter;
    }

    public void setParameter(String parameter) {
        Parameter = parameter;
    }
    
    
    
}

这是我的存储库:

package com.test.repository;


import java.util.List;


import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import com.test.model.Ergebnisse;

@Repository
public interface ErgebnisseRepository extends JpaRepository<Ergebnisse,Integer> {

    @Query("FROM Ergebnisse where Material=:Material")
    List<Ergebnisse> findMaterial(@Param("Material") String Material);

}

还有我的控制器:

package com.test.controllers;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.test.load.ErgebnisseRequest;
import com.test.model.Ergebnisse;
import com.test.repository.ErgebnisseRepository;

@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/api")
public class ErgebnisseController {
    
    @Autowired
    ErgebnisseRepository repository;
    

    @RequestMapping(value="/ergebnisse", method=RequestMethod.GET)
    public List<Ergebnisse> getData(ErgebnisseRequest request){
        
        
        List<Ergebnisse> ergebnisseList = repository.findAll();
        
        return ergebnisseList;
        
        
    }
    
    @RequestMapping(value="/search", method=RequestMethod.GET)
    public List<Ergebnisse> Search(ErgebnisseRequest request){
        
        
        List<Ergebnisse> ergebnisseList = repository.findMaterial(request.getMaterial());
        
        return ergebnisseList;
        
        
    }

这是我的数据库: My Database

编辑: 这是我的 ErgebnisseRequest class:

package com.test.load;

import java.sql.Timestamp;

import javax.persistence.Column;

import com.fasterxml.jackson.annotation.JsonFormat;

public class ErgebnisseRequest {
    
    @Column(name="material")
    private String material;
    
    
    

    public String getMaterial() {
        return material;
    }

    public void setMaterial(String material) {
        this.material = material;
    }


}

所以 repository.findAll() 为我提供了数据库中的所有数据。但是当我试图通过 Material 进行搜索时,它给了我一个空列表并且没有错误。我尝试了所有这些,例如将大写字母更改为小写字母等。将不胜感激。

这是它在 Postman 中的照片: find by Material test

尝试将您的 HTTP 请求从 GET 更改为 POST,以便能够使用您尝试发送的 RequestBody 内容。

例如

@RequestMapping(value="/ergebnisse", method=RequestMethod.POST)
public List<Ergebnisse> getData(@RequestBody ErgebnisseRequest request)

并将您的邮递员请求从 GET 更改为 POST

您仍然可以使用 GET 但将内容作为请求参数传递

例如

@RequestMapping(value="/ergebnisse", method=RequestMethod.GET)
public List<Ergebnisse> getData(@RequestParam(name = "material") String material) {

     List<Ergebnisse> ergebnisseList = repository.findMaterial(material);
    
    return ergebnisseList;
}

并在您的邮递员中维护 GET 请求,但将 URL 修改为:

http://localhost:9090/test/api/search?material=Germini