Сортировка коллекции в спящем режиме при извлечении из базы данных - PullRequest
10 голосов
/ 22 февраля 2011

У меня есть объект Foo со списком Бар.Есть ли способ настроить мой класс так, чтобы getBars () возвращал список, отсортированный с Collections.sort?Другими словами, я хотел бы запустить Collections.sort при первом заполнении списка.В настоящее время я вызываю сортировку при извлечении коллекции, которая может быть избыточной и легко забываемой.

Ответы [ 5 ]

24 голосов
/ 22 февраля 2011

Используете ли вы сопоставления в стиле J2EE с файлами Hibernate XML или используете JavaBeans с аннотациями JPA?

Если вы используете JPA, вы можете использовать аннотацию @OrderBy, чтобы позволить базе данных отсортировать коллекцию для вас. Вы также можете использовать @Sort, чтобы сделать это на стороне Java.

Наконец, если вы пишете HQL - скажем, в @NamedQuery - вы можете использовать предложение ORDER BY.

Множество способов сделать это!

7 голосов
/ 22 февраля 2011

Я думаю, если вы аннотируете свойство с помощью @Sort, оно автоматически сортируется

У вас также есть возможность указать пользовательский класс Comparator:

@Sort(comparator=MyComparator.class, type=SortType.COMPARATOR)

Справка:

3 голосов
/ 22 февраля 2011

Если вы используете конфигурацию XML, вы можете установить атрибут order-by: -

<class name="Foo" table="Foo">
    ...

    <set name="bars" inverse="true" order-by="barName">
        <key column="fooId" />
        <one-to-many class="Bar" />
    </set>
</class>

Таким образом, когда вы вызываете foo.getBars(), вы получите Bar объектов, упорядоченных по имени бара, в этом примере.

3 голосов
/ 22 февраля 2011

ознакомьтесь со спящими документами по отсортированным коллекциям

http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html/collections.html#collections-sorted.

Вы также можете добавить другой метод в DAO, который использует hql для извлечения потомков, который вы можете отсортировать через hql.

Если процедура сортировки не основана на одном столбце, я не думаю, что у вас есть выбор, кроме как выполнить сортировку самостоятельно. Вы можете добавить логику в модель вашего домена ...

0 голосов
/ 22 февраля 2011

Сортировка списка при выборе из БД будет лучшим выбором (пусть db sort it), а не сортировка после выбора.

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