Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Hibernate 
:(
    Опции темы
Вано
Дата 15.9.2004, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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-запрос).

Зарание БЛАГОДАРЕН

PM MAIL   Вверх
Вано
Дата 15.9.2004, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 23.6.2004

Репутация: нет
Всего: нет



Ура народ я уже знаю как ето сделать

Код
   String sql = "select distinct u.id as {uzer.id},"
     + " u.name as {uzer.name},"
     + " u.extradata as {uzer.extradata} from User u "
     
     + "left join grupa_user as include "
     + "on ( include.userid = u.id and include.grupaid in (1, 4) ) "
     + "left join grupa_user as exclude "
     + "on ( exclude.userid = u.id and exclude.grupaid in (2, 3) ) "
     + "where include.grupaid is not null and exclude.grupaid is null;";
     
     
   List results =
     session.createSQLQuery(sql, "uzer", User.class).list();


Все равно спасибо всем кто осмелился прочитать до конца заданый мною вопрос smile.gif
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java tools & IDE's | Следующая тема »


 




[ Время генерации скрипта: 0.0579 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.