如何对grails对象的persistentSet进行排序?

时间:2011-12-09 00:03:09

标签: sorting grails domain-model persistent-set

我有两个域模型:

class Resource{
   String name

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

class ResourceGroup{
   String groupName

   static hasMany = [resources: Resource]
}

控制器:

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 个答案:

答案 0 :(得分:1)

item.resources.sort { it.name }

尝试"asc" 对于item.resources.sort { it.name }.reverse()

"desc"

答案 1 :(得分:0)

您不能对一对多或多对多关系进行默认排序。请参阅documentation here,特别注意底部的说明:

  

这些映射不适用于默认的单向一对多或多对多关系,因为它们涉及连接表。有关详细信息,请参阅this issue。考虑使用SortedSet或带有排序参数的查询来获取所需的数据。

您指定的默认排序实际上会对Resource个对象的列表进行排序(即如果您获得了此列表Resource.getAll(),则列表将按您指定的顺序排序。

要做你想要的事情,考虑创建一个标签库,如唐建议here