【问题标题】:how to sort persistentSet of grails objects?如何对 grails 对象的持久集进行排序?
【发布时间】:2011-12-09 00:03:08
【问题描述】:

我有两个领域模型:

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”进行排序?这是一套持久化的hibernate!我认为这可以用映射排序名称处理:'asc',但它不起作用:-(

【问题讨论】:

    标签: sorting grails domain-model persistent-set


    【解决方案1】:

    试试item.resources.sort { it.name } 换成"asc"

    item.resources.sort { it.name }.reverse()"desc"

    【讨论】:

      【解决方案2】:

      您不能在一对多或多对多关系上使用默认排序。请参阅documentation here,特别注意底部的注释:

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

      您指定的默认排序实际上会对Resource 对象列表进行排序(即,如果您得到这样的列表Resource.getAll(),则该列表将按照您指定的顺序进行排序)。

      要按照 Don 的建议 here,考虑创建一个选项卡库。

      【讨论】:

        猜你喜欢
        • 2013-10-16
        • 1970-01-01
        • 1970-01-01
        • 2012-12-26
        • 1970-01-01
        • 1970-01-01
        • 2010-11-15
        • 1970-01-01
        • 2013-07-08
        相关资源
        最近更新 更多