
Новичок
Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.6.2004
Репутация: нет Всего: нет
|
Помогите перевети запрос из MySQL в HQL (Hibernate-запрос). Ситуация такая: таблица user; Код | +-----------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-----------+-----------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | name | char(20) | YES | | NULL | | | extradata | char(200) | YES | | NULL | | +-----------+-----------+------+-----+---------+----------------+ |
таблица grupa; Код | +-------------+-----------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+-----------+------+-----+---------+----------------+ | id | int(11) | | PRI | NULL | auto_increment | | name | char(20) | YES | | NULL | | | description | char(200) | YES | | NULL | | +-------------+-----------+------+-----+---------+----------------+ |
и связани отношением много к многим таблицей grupa_user; Код | +---------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +---------+---------+------+-----+---------+-------+ | grupaid | int(11) | | | 0 | | | userid | int(11) | | | 0 | | +---------+---------+------+-----+---------+-------+ |
запрос для заполнения таблиц (для тестирования работи) Код | delete from user; insert into user (id, name, extradata) values (1, "[email protected]", "name"); insert into user (id, name, extradata) values (2, "[email protected]", "name"); insert into user (id, name, extradata) values (3, "[email protected]", "name"); insert into user (id, name, extradata) values (4, "[email protected]", "name"); insert into user (id, name, extradata) values (5, "[email protected]", "name");
delete from grupa; insert into grupa (id, name, description) values (1, "group1", "888"); insert into grupa (id, name, description) values (2, "group2", "888"); insert into grupa (id, name, description) values (3, "group3", "888"); insert into grupa (id, name, description) values (4, "group4", "888");
delete from grupa_user; insert into grupa_user (userid, grupaid) values (1, 1); insert into grupa_user (userid, grupaid) values (2, 1); insert into grupa_user (userid, grupaid) values (3, 1); insert into grupa_user (userid, grupaid) values (4, 1); insert into grupa_user (userid, grupaid) values (5, 1); insert into grupa_user (userid, grupaid) values (2, 2); insert into grupa_user (userid, grupaid) values (1, 3); insert into grupa_user (userid, grupaid) values (2, 3); insert into grupa_user (userid, grupaid) values (3, 3); insert into grupa_user (userid, grupaid) values (1, 4); insert into grupa_user (userid, grupaid) values (2, 4); insert into grupa_user (userid, grupaid) values (4, 4); |
и наконец интересующий меня запрос Код | select distinct id, name from user left join grupa_user as include on ( include.userid = user.id and include.grupaid in (1, 4) ) left join grupa_user as exclude on ( exclude.userid = user.id and exclude.grupaid in (2, 3) ) where include.grupaid is not null and exclude.grupaid is null; |
он возвращает Юзеров которие входят в группы (1,4) но не входят в группы (2,3). В етом примере результат Юзера с id = 4 и 5. Помогите перевести етот запрос на HQL (Hibernate-запрос). Зарание БЛАГОДАРЕН
|