【发布时间】:2019-10-07 08:57:27
【问题描述】:
我正在使用 JPA 存储库。我有一个与 Employee 表具有一对多关系的 Company 表。我想获取姓氏为 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;
}
【问题讨论】:
标签: java hibernate jpa spring-data-jpa criteria-api