【发布时间】:2022-01-03 17:39:36
【问题描述】:
我有 3 个实体,例如 Category、SubCategory 和 Course。
一个类别可以有很多子类别,一个子类别可以有很多课程。
我已经在类别之间建立了一对多的关系——子类别和子类别——当然是 Fetch.Lazy。
class Category {
@OneToMany(mappedBy = "category")
private Set<SubCategory> subCategories = new HashSet<>();
}
class SubCategory {
@ManyToOne
private Category category;
@OneToMany(mappedBy = "subCategory")
private Set<Course> courses = new HashSet<>();
}
class Course {
@ManyToOne
private SubCategory subCategory;
}
@Service
class CategoryService {
@PersistenceContext
private EntityManager entityManager;
public List<Category> findAll() {
TypedQuery<Category> query =
entityManager.createQuery("select c from Category c join fetch c.subCategories", Category.class);
return query.getResultList();
}
}
@RestController
@RequestMapping
class CategoryController {
@Autowired
private CategoryService categoryService;
@GetMapping
public List<Category> findAll() {
return categoryService.findAll();
}
}
现在,当我使用 fetch join sub-categories 触发 getAll Categories 查询时,我会得到带有加入服务的子类别的类别,但是一旦要给出输出,它就会触发“n”个小查询来获取课程和把它作为输出给我,但我不需要它如何解决?
【问题讨论】:
-
能贴出代码吗?
标签: spring-boot hibernate spring-data-jpa