Я хочу реализовать метод поиска / поиска, который будет фильтровать мой объект Product по заданным параметрам и возвращать мне набор товаров, которые будут отфильтрованы.
Я читал об интерфейсе спецификаций и Criteria API, но яУ меня возникли трудности с реализацией решения.
Элемент продукта:
@Entity
public class Product implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long productId;
@NotEmpty(message = "The product name must not be null.")
private String productName;
private String productDescription;
@Min(value = 0, message = "The product price must no be less then zero.")
private double productPrice;
@Min(value = 0, message = "The product unit must not be less than zero.")
private int unitInStock;
@ManyToMany
@JoinTable(name = "category_product", joinColumns = @JoinColumn(name = "product_id"), inverseJoinColumns = @JoinColumn(name = "category_id"))
private Set<Category> categories = new HashSet<>();
Поскольку я хочу, чтобы пользователь мог выполнять поиск также по названию категории, у кровати есть ценовой диапазон и unitInStock, который является отдельными это связано с отношением @ManyToMany, я хочу иметь метод, который будет выглядеть примерно так:
@GetMapping("/search")
public ResponseEntity<Set<Product>> advancedSearch(@RequestParam(name="category") String categoryName,
@RequestParam(name="price") double price,
@RequestParam(name="unitInStock") int unitInStock ){
}
Категория объекта:
@Entity
public class Category implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long categoryId;
@NotEmpty(message = "Can not be null")
private String CategoryName;
@ManyToMany(mappedBy = "categories")
@JsonBackReference
private Set<Product> products = new HashSet<>();