У меня есть требование подкачки и сортировки сущности.
@Entity
@Table(name = "CATEGORY", catalog = "")
public class CategoryEntity {
private CategoryEntity categoryByParentCategoryId;
private Set<CategoryEntity> categoriesByCategoryId;
@ManyToOne(fetch = FetchType.LAZY,optional = false, cascade = CascadeType.PERSIST)
@JoinColumn(name = "PARENT_CATEGORY_ID", referencedColumnName = "CATEGORY_ID")
public CategoryEntity getCategoryByParentCategoryId() {
return categoryByParentCategoryId;
}
public void setCategoryByParentCategoryId(CategoryEntity categoryByParentCategoryId) {
this.categoryByParentCategoryId = categoryByParentCategoryId;
}
@OneToMany(mappedBy = "categoryByParentCategoryId", cascade = CascadeType.PERSIST)
public Set<CategoryEntity> getCategoriesByCategoryId() {
return categoriesByCategoryId;
}
public void setCategoriesByCategoryId(Set<CategoryEntity> categoriesByCategoryId) {
this.categoriesByCategoryId = categoriesByCategoryId;
}
Из этой ссылки и других ответов о переполнении стека, я обнаружил, что могу использовать сортировку и разбиение по страницам, используя Paging Request
как
Pageable size = new PageRequest(page, paginationDTO.getSize(),Sort.Direction.ASC, "id");
Моя проблема в том, что у меня есть self join
родительские и дочерние отношения, как показано выше в модели, и мне нужно отсортировать родителя по количеству детей, как показано ниже.
![Data table for Category Entity](https://i.stack.imgur.com/nzHQ6.png)
Здесь Number of SubCategories
- это размер categoriesByCategoryId
. Что мне нужно передать в PageRequest
вместо id
, чтобы отсортировать по размеру списка ребенка.
PS. В модели есть больше полей, но чтобы вопрос был коротким, я разместил только соответствующие поля