为什么我的查询 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
这是我的实体 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