как отсортировать persistentSet объектов grails? - PullRequest
2 голосов
/ 09 декабря 2011

У меня есть две модели домена:

class Resource{
   String name

   static mapping = {
                 sort name:"asc"
          }
}

class ResourceGroup{
   String groupName

   static hasMany = [resources: Resource]
}

Контроллер: * +1004 *

def resGroups = ResourceGroup.findAll()
render (
        view: "index",
        model: [resourcegroups: resGroups]
)

так и сейчас в моем gsp:

<g:each in="${resourcegroups}" var="item" status="i">
   ...
   <g:each in="${item.resources}" var="res" status="y">
       <!-- THESE ITEM.RESOURCES ARE UNSORTED! -->
   </g:each>
   ...
</g:each>

мой вопрос: как мне отсортировать этот "item.resources"? это постоянный набор в спящий режим! Я думал, что это можно сделать с помощью имени сортировки сопоставления: «asc», но это не работает: - (

Ответы [ 2 ]

1 голос
/ 14 июля 2014

Попробуйте item.resources.sort { it.name } для "asc",

или item.resources.sort { it.name }.reverse() для "desc".

0 голосов
/ 09 декабря 2011

Нельзя использовать сортировку по умолчанию для отношений «один ко многим» или «многие ко многим».См. документацию здесь , обращая особое внимание на примечание внизу, которое гласит:

Эти сопоставления не будут работать для однонаправленных по умолчанию «один ко многим» или «многие ко многим»отношения, потому что они включают в себя таблицу соединений.См. эту проблему для более подробной информации.Подумайте об использовании SortedSet или запросов с параметрами сортировки для получения нужных вам данных.

Указанная вами сортировка по умолчанию фактически сортирует список Resource объектов (т. Е. Если бы вы получили список, подобный этому Resource.getAll(), список будет отсортирован в указанном вами порядке).

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

...