Я должен показать Сотрудника и его Проект в раскрывающемся списке сотруднику в правильной табличной форме.В верхней части мне нужно показать количество записей.Итак, я делаю два запроса, один для получения количества и другой для получения сотрудника и его проекта. Наконец, общее количество приходит сотрудник * проект количество.
Если у сотрудника есть 3 проекта, то он считается до 3. Но мне нужно только количество сотрудников.И я получаю отдельный Employee
объект, у этого объекта работника есть список Project
.
Я использовал .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
, чтобы получить вот так.
Пожалуйста, помогите мне получить только количество сотрудников вместо сотрудник * проект , я борюсь с этим.
Мой код:
public Collection fetchEmployeeWithProject(final List condition,
final PaginationCriteria pageCriteria)
throws DataAccessLayerException {
Session session = this.getPersManager().getCurrentSession();
Criteria criteria = session.createCriteria(Employee.class, "employee")
.createAlias(
"employee.empProject", "empProject",
CriteriaSpecification.LEFT_JOIN).createAlias(
"empProject.Project", "project",
CriteriaSpecification.LEFT_JOIN);
criteria = this.addMultipleSeachCriteria(criteria, condition);
this.buildPaginatedCriteria(criteria, pageCriteria);
List lst = criteria.list();
session.clear();
return lst;
}
protected Criteria buildPaginatedCriteria(Criteria criteria,
PaginationCriteria pageCriteria) throws DataAccessLayerException {
logger.debug(LOG_PREFIX + "buildPaginatedCriteria::Begin");
if (pageCriteria != null) {
if (!pageCriteria.isFetchAll()) {
if (pageCriteria.getTotalRecords() == 0)
pageCriteria.setTotalRecords(((Integer) criteria
.setProjection(Projections.rowCount())
.uniqueResult()).intValue());
criteria.setProjection(null);
criteria.setFirstResult(
pageCriteria.getFirstRecordOfCurrentPage())
.setMaxResults(pageCriteria.getRecordsPerPage());
}
if (StringUtils.isNotBlank(pageCriteria.getSortBy()))
criteria.addOrder(pageCriteria.isSortDescending() ? Order
.desc(pageCriteria.getSortBy()) : Order
.asc(pageCriteria.getSortBy()));
if (StringUtils.isNotBlank(pageCriteria.getSecondarySortBy())) {
criteria.addOrder(Order.asc(pageCriteria.getSecondarySortBy()));
}
if (pageCriteria.isCached()) {
criteria.setCacheable(true).setCacheMode(CacheMode.NORMAL);
}
}
criteria
.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY);
logger.debug(LOG_PREFIX + "buildPaginatedCriteria::End");
return criteria;
}
Это методы, которыми я являюсьиспользование.