Я использую репозитории JPA. У меня есть таблица Company с отношениями один-ко-многим с таблицей Employee. Я хочу получить список компаний с числом сотрудников, фамилия которых x. Я пытаюсь использовать множественный выбор, но счет не заполняется. Вот что я пытаюсь сделать.
public class CompanyEntity {
@Id
private UUID id;
@Column
private String name;
@OneToMany(fetch = FetchType.LAZY, mappedBy = "company", orphanRemoval = true)
private List<EmployeeEntity> employees;
@Transient
private Integer employeeCount;
}
...
@Autowired
private CompanyRepository repo;
...
public Page<CompanyEntity> findAllCompanies(Pageable pageable, String lastname) {
Specification<CompanyEntity> specification = (root, criteriaQuery, criteriaBuilder) -> {
Join employees = root.join("employees");
criteriaQuery.groupBy(root);
criteriaQuery.multiselect(root, criteriaBuilder.count(employees).alias("employeeCount"));
Predicate predicate = criteriaBuilder.equal(employees.get("lastname"), lastname);
return predicate;
};
Page<EmployeeEntity> page = repo.findAll(specification, pageable);
return page;
}