Spring JPA - исправлена ​​сортировка между двумя обновлениями - PullRequest
0 голосов
/ 10 января 2019

Я пытаюсь отобразить имя элемента списка. У меня есть список DVD-медиа. Каждый DVD-носитель имеет список стран (набор стран) модель dvd-media

У меня есть контроллер, отправляющий список с именем "dvds". С помощью функции thyEleaf для forEach мне удается отображать названия стран, но порядок элементов списка изменений тимелина при обновлении страницы.

Например, при запуске первой страницы отображаются: «country1Name», «country2Name», «country3Name». После обновления (F5) теперь отображаются: «country2Name», «country1Name», «country3Name».

    <div class="row" th:each="dvd : ${dvds}">
<div class=col-3>
     <div th:each="country, iterStat : ${dvd.countries}"
     th:text="${!iterStat.last} ? ${country.name} + ', ': ${country.name}"></div>
</div>

Если я добавлю свойство "iterIndex", я увижу, что countryNames не имеет одинаковый индекс между каждым обновлением.

Почему существует логика для отображения элементов списка в каждом теге?

Я попытался заменить Set на TreeSet в Dvd.class и Country.class, но это вызвало исключение AnnotationException: Illegal attempt to map a non collection as a @OneToMany, @ManyToMany or @CollectionOfElements

С новым годом всех!

1 Ответ

0 голосов
/ 10 января 2019

Set Collection не является упорядоченным списком, поэтому вы можете отсортировать эти данные в запросе, который извлекает эти данные, или вы можете отсортировать их в Thymeleaf:

<div th:each="country, iterStat : ${#lists.sort(dvd.countries)}"
...