Запрос Hibernate, который упорядочивает атрибут на основе вложенного пути - PullRequest
0 голосов
/ 20 января 2010

У меня есть два объекта, записи и образцы.Каждая запись имеет связанный набор образцов, и каждый образец имеет голос, связанный с ним.Мне нужно запросить базу данных для всех записей, но для каждой записи мне нужен связанный набор сэмплов, отсортированных в соответствии с их атрибутом голосования:

public Class Entry{
    Set<Sample> samples;
}

public Class Sample{
    int vote;
}

Я попытался отсортировать список сэмплов после того, как выполнилзапрос, но это оказалось беспорядок, потому что не может привести между набором Hibernate и набором Java.Может ли кто-нибудь помочь мне изменить мой запрос, чтобы получить результат, который мне нужен?

List<Entry> entries = jpaTemplate.find("from Entry");

Ответы [ 2 ]

2 голосов
/ 21 января 2010

Я нашел смущающее простое решение этой проблемы. Существует аннотация @OrderBy JPA, которая отлично работает:

@OneToMany(cascade = {CascadeType.PERSIST, CascadeType.MERGE})
@OrderBy("votes DESC")
public Set<Sample> getSamples() {
    return samples;
}
0 голосов
/ 20 января 2010

Согласно спящему режиму faq : Есть три разных подхода:

  1. Используйте SortedSet или SortedMap, указав класс компаратора в атрибуте sort или или. Это решение делает сортировку в памяти.

  2. Укажите атрибут order-by или присвойте имя столбцу таблицы для сортировки. Это решение работает только в JDK 1.4 +.

  3. Использовать фильтр session.createFilter (collection, "order by ....") .list ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...