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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проблема с запросом на Hibernate 
:(
    Опции темы
4epT
Дата 19.12.2010, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добрый день) Получается есть таблица User, Role, RoleCast. В таблице User есть поле id, login. password. в таблице Role id, title, role. Ну и таблица RoleCast играет роль связи ... тоесть каждый User может иметь много ролей. RoleCast имеет такие поля id, idUser и idRole.

Как выбрать все роли для юзера? по его id ...

делаю вот так вот:

Код

ArrayList<Rolecast> tmp = new ArrayList<Rolecast>();
        ArrayList<Role> lst = new ArrayList<Role>();
        Session session = sessionFactory.openSession();
        session.beginTransaction();
        Users usr = this.get(login);
        tmp = (ArrayList<Rolecast>) session.createCriteria(Rolecast.class).add( Restrictions.eq( "idUser" , usr.getId() ) ).list();
        //lst = (ArrayList<Role>) session.createSQLQuery("select r.* from rolecast rc inner join role r on idRole = r.id where rc.idUser = " + usr.getId()).list();
        
        for(int i = 0; i < tmp.size(); i++)
        {
            lst.add( (Role) session.createCriteria(Role.class).
                             add( Restrictions.eq( "id", tmp.get(i).getIdRole() ) ).list());
        }
        
        return lst;


Выдает вот такой Exception:

Код

java.lang.ClassCastException: java.util.Collections$EmptyList cannot be cast to java.util.ArrayList
        at com.myapp.dao.UserDAO.getRoles(UserDAO.java:55)
        at com.myapp.springUtils.UserServiceImpl.loadUserByUsername(UserServiceImpl.java:38)


Кто подскажет что я не так делаю ? Или как правильно написать такой запрос.

Искал по форуму такой вопрос, нашел но он не помог ... Там был совет сделать поля в RoleCast не int а именно User и Role. Но как то не понятно зачем так делать, есди в БД поля именно id.

Вопрос решен) Неправильно конфиг сделал.

Это сообщение отредактировал(а) 4epT - 19.12.2010, 16:39
PM MAIL   Вверх
surly
Дата 20.12.2010, 21:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



так связь же OneToMany? если да, зачем 3 таблицы, решается все 2мя.

Добавлено через 50 секунд
ну и если сделал, покажи как и покажи мапинги классов=)
PM MAIL   Вверх
4epT
Дата 21.12.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(surly @ 20.12.2010,  21:32)
так связь же OneToMany? если да, зачем 3 таблицы, решается все 2мя.

Добавлено @ 21:33
ну и если сделал, покажи как и покажи мапинги классов=)

сделал мягко говоря не красиво .... почему OneToMany ? связи как раз выходит ManyToMany .... между юзерами и ролями стоит таблица которая является связующим звеном)) Если же я ошибаюсь покажи пример пожалуйста)

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

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

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




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


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

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