Сортировать набор в Java - PullRequest
       2

Сортировать набор в Java

0 голосов
/ 22 ноября 2018

Используемая среда: Spring

Используемая ORM: Hibernate

У меня есть два класса

class BatchExceptionDetails{
...
private Set<BatchExceptionComments> batchExceptionComments;
}

class BatchExceptionComments implements Comparable<BatchExceptionComments>{
...
@Override
    public int compareTo(BatchExceptionComments o) {
        // TODO Auto-generated method stub

        return this.getAddedOn().compareTo(o.getAddedOn());
    }
}

Они сопоставлены с сопоставлением один ко многим.

В BatchExceptionDetails есть набор BatchExceptionComments.

Я хочу отсортировать набор на основе даты.BatchExcpetionComment имеет атрибут типа java.util.Date, т.е. добавленный.Я хочу, чтобы последний комментарий был первым элементом набора.

Набор, который я получаю, не отсортирован.Подскажите, пожалуйста, куда я иду не так.

Заранее спасибо

Ответы [ 2 ]

0 голосов
/ 22 ноября 2018

После некоторого бреда я нашел решение.

Я только что объявил набор

private Set<BatchExceptionComments> batchExceptionComments;

Вместо использования Comparable, я использовал Order By, чтобы упорядочить набор.

 <set name="batchExceptionComments" table="BATCH_EXCEPTION_COMMENTS" 
                inverse="true" fetch="select" lazy="false" order-by="commentId">
            <key>
                <column name="EXCEPTION_ID" not-null="true" />
            </key>
            <one-to-many class="com.beans.BatchExceptionComments" />
        </set>

Я считаю, что порядок по Id будет лучше.

PS Я использую hbm.xml вместо аннотации

0 голосов
/ 22 ноября 2018

Set - это интерфейс, поэтому невозможно установить, является ли он сортируемым или нет.Вы должны использовать правильную реализацию, например TreeSet .Если вы хотите подчеркнуть, что это отсортированный набор, вы должны использовать интерфейс SortedSet.TreeSet реализует SortedSet.

В качестве альтернативы вы можете использовать List, а затем вы можете отсортировать его, используя Collections.sort.

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