JSF Hibernate Критерии API

1

У меня есть запрос в API критериев, который выглядит следующим образом:

CriteriaQuery<XXX> query = builder.get().createQuery(XXX.class).distinct(true);
Root<XXX> root = query.from(XXX.class);
Fetch<XXX, YYY> fetch = root.fetch(XXX_.yyy, JoinType.LEFT);

теперь часть, на которую я застрял:
когда я получил результаты запроса, я получил список записей XXX с прикрепленным списком записей YYY, когда они существуют.
Я хочу отсортировать мой результат с помощью NUMBER OF YYY записей, перенесенных на объект XXX.

И до сих пор я ближе к паранойе к этой цели. Кто угодно?

Теги:
hibernate
jsf
criteria-api

1 ответ

1
Лучший ответ

Чтобы решить вашу проблему, вам нужно получить результат SQL Query (который генерируется из критериев спящего режима), который будет выглядеть следующим образом:

SELECT xxx.*,count(yyy.FOREIGN_KEY_FIELD) as count FROM XXX xxx left join YYY yyy on (yyy.FOREIGN_KEY_FIELD=xxx.PRIMARY_KEY_FIELD) group by xxx.PRIMARY_KEY_FIELD order by count

Вероятно, для этого случая вам нужно использовать hibernate query api. Критерий создается для сущностей и возвращает только список объектов и некоторых прогнозов. В hql он будет очень похож на:

select xxx,count(yyy.FOREIGN_KEY_FIELD) as count from XXX xxx left join xxx.yyy yyy group by xxx.PRIMARY_KEY_FIELD order by count

HQL более гибкий для таких запросов.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню