Я написал Query в моем ProductRepository, как показано ниже:
@Query(value = "select p from Product p where p.code = :code")
Product findByCode(@Param("code")String code);
очевидно, что я просто хочу вернуть запрос 1 Product, но иногда, когда я вызываю API, он всегда возвращает список всех моих продуктов..
это сгенерированный запрос, который я получаю из журнала
Hibernate: select product0_.code as code1_4_, product0_.name as name2_4_, product0_.price as price3_4_, product0_.unit as unit4_4_ from product product0_
Я не вижу условие WHERE, которое я написал
Это мой класс продукта:
package com.example.model;
import com.fasterxml.jackson.annotation.JsonIgnore;
import javax.persistence.*;
import java.util.List;
import java.util.Objects;
@Entity
public class Product {
@Id
private String code;
private String name;
private Float price;
private String unit;
@JsonIgnore
@OneToMany(fetch = FetchType.LAZY, mappedBy = "product", cascade
=CascadeType.ALL)
private List<OrderLine> orderLines;
public Product(String code, String name, float price, String unit) {
this.code = code;
this.name = name;
this.price = price;
this.unit = unit;
}
public Product(String code, float price, String unit) {
this.code = code;
this.price = price;
this.unit = unit;
}
public Product(String code) {
this.code = code;
this.price = Float.valueOf(0);
}
public Product(String code, String unit) {
this.code = code;
this.unit = unit;
this.price = Float.valueOf(0);
}
public Product() {}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Float getPrice() {
return price;
}
public void setPrice(float price) {
this.price = price;
}
public String getUnit() {
return unit;
}
public void setUnit(String unit) {
this.unit = unit;
}
@Override
public String toString() {
return "Product{" +
"code='" + code + '\'' +
", name='" + name + '\'' +
", price=" + price +
", unit='" + unit + '\'' +
'}';
}
public List<OrderLine> getOrderLines() {
return orderLines;
}
public void setOrderLines(List<OrderLine> orderLines) {
this.orderLines = orderLines;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof Product)) return false;
Product product = (Product) o;
return this.getCode().equals(product.getCode());
}
@Override
public int hashCode() {
return Objects.hash(getCode());
}}
Мой контроллер
@RestController
@RequestMapping("/products")
public class ProductController {
@Autowired
ProductRepo productRepo;
@Autowired
StaffRepo staffRepo;
@Autowired
InventoryRepo inventoryRepo;
@GetMapping("/get")
public ResponseEntity getAll(){
List<Product> products = productRepo.findAll();
if(products== null){
return ResponseEntity.status(404).body("Product not found !");
}
return ResponseEntity.ok().body(products);
}
@GetMapping("/get/{code}")
public ResponseEntity getProductByCode(@PathVariable String code){
Product p = productRepo.findByCode(code);
if(p== null){
return ResponseEntity.status(404).body("Product not found !");
}
return ResponseEntity.ok().body(p);
}