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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> hibernate сортировка, как сортировать листы прямо в hibernate 
:(
    Опции темы
cSKA
Дата 18.5.2010, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



есть такой метод:

Код

    public List<Group> groups() {
        begin();
        List<Group> groups = session.createQuery("from model.Group").list();
        commit();

        return groups;
    }


у класса Group есть метод toString:

Код

    public String toString() {
        return letter+""+course+""+number+" ("+speciality+")";
    }


хотелось бы чтобы hibernate сортировал выдаваемый лист по этим значениям

Заранее благодарен
PM MAIL   Вверх
jManiak
Дата 19.5.2010, 02:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



а что мешает добавить в createQuery() "order by clause"?

Hibernate documentation:
Цитата

15.11. The order by clause

The list returned by a query can be ordered by any property of a returned class or components: 
Цитата

from DomesticCat cat
order by cat.name asc, cat.weight desc, cat.birthdate


The optional asc or desc indicate ascending or descending order respectively.


Сортировка должна происходить на уровне СУБД. Тут без разницы что там в toString()
PM MAIL ICQ   Вверх
cSKA
Дата 21.5.2010, 00:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



возникла еще одна проблема:

есть два класса обертки

Код

public class Student {

    private Long id;
    private String fio;
    private Group group;
    private List<Lab_Student> ls;

    public Student() {
    }

    public Student(String fio, Group group) {
        this.fio = fio;
        this.group = group;
    }

.........


Код

public class Group {

    private Long id;
    private String speciality;
    private String letter;
    private int course;
    private int number;
    private List<Student> students;
    private List<Group_Teacher_Subject> gtses;

    public Group() {
    }

    public Group(String speciality, String letter, int course, int number) {
        this.speciality = speciality;
        this.letter = letter;
        this.course = course;
        this.number = number;
    }

.......


и есть метод выборки всех групп из базы
Код

public List<Group> groups() {
        begin();
        List<Group> groups = session.createQuery("from model.Group g order by g.letter, g.course, g.number").list();
        for (Group group : groups)
            Hibernate.initialize(group.getStudents());
        commit();

        return groups;
    }


хотелось бы чтобы лист students в экземпляре класса Group полученного этим методом были отсортированы по полю fio
подскажите как сделать
PM MAIL   Вверх
jManiak
Дата 21.5.2010, 03:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Вообще хорошей практикой считается написание над entity классами - некоего слоя с которым будет непосредственно общаться бизнес-уровень, так называемый(ые) DAO класс(ы). В нем(них) как раз и создаются методы для создания и манипулирования сущностями, а так же получения нужных списков в нужном формате. 
Лучше всего это делать так:
Создать заранее NamedQueryes которые понадобятся для каждой сущности. А затем уже в методах класса(ов) DAO - делать вызов уже готовых запросов(с подстановкой параметров необходимых) и выдача результата запросившему.
PM MAIL ICQ   Вверх
cSKA
Дата 21.5.2010, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



у меня есть классы которые производят общение с базой
а именно
insert
select
update
delete
в них и есть эти методы
просто я хотел чтобы Group занющие о своих Student занала их отсортированными, и что бы сортировка желательно выполнялась при обращение Hibernate.initialize(group.getStudents());

Добавлено через 7 минут и 49 секунд
я сейчас делаю приложение работающее в виде MVC
модель - работает с базой
вьюер - гуи приложение
контроллер - забирает значения из модели и генерирует модели листов и таблиц для свинга

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

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

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


 




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


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

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