У меня есть простая модель проекта с пользователями.Предположим, мне нужно выбрать все проекты, которые имеют, например, минимум 5 пользователей.В sql это было бы что-то вроде этого (я не пробовал, может быть где-то ошибка):
select * from PROJECTS p where count(select * from USERS u left join PROJECT_MEMBERS m on u.object_id=m.user_id where m.project_id=p.object_id)>5;
В модели проекта у меня есть:
private Set<UserModel> users = new HashSet<UserModel>();
и его отображение какчто:
<set name="users"
cascade="none"
table="PROJECT_MEMBERS">
<key column="project_id" />
<many-to-many
column="user_id"
class="UserModelImpl"/>
</set>
В настоящее время мой дао выглядит следующим образом:
Criteria hbCriteria = session.createCriteria(ProjectModelImpl.class);
hbCriteria.add(Restrictions.ilike("name", criteria.getProjectName(), MatchMode.ANYWHERE));
return hbCriteria.list();
Как добавить критерий создания, который бы выбирал только те проекты, у которых criteria.getMinUsers()
пользователей?
Дайте мне знать, если вам нужен еще код или отображение