【发布时间】:2022-01-21 06:53:50
【问题描述】:
这是我的类别表。
@Getter
@Setter
@NoArgsConstructor
@Entity
public class Category {
@Id
@GeneratedValue
private long id;
private String name;
private String imageFileName;
private int depth;
@ManyToOne
private Category parentCategory;
@OneToMany(mappedBy = "parentCategory")
private List<Category> childCategories;
@OneToMany(mappedBy = "category")
private List<Product> products;
private boolean deleted;
}
这是一个仅适用于 0 和 1 深度类别的解决方案。
public List<Product> getByCategoryId(long categoryId) {
Category category = categoryService.getById(categoryId);
if (category.getDepth() == 0) {
return productRepository.findByCategoryParentCategoryAndDeletedFalse(category);
}
return productRepository.findByCategoryAndDeletedFalse(category);
}
我想按类别 ID 获取所有产品。例如,如果我想按深度为 10 的类别获取产品,我必须编写这么长的方法。我不想为每个深度都写方法。我怎样才能简化?
【问题讨论】:
标签: java spring-boot spring-data-jpa