如何对 Grails 对象的 persistenceSet 进行排序?

发布于 2024-12-20 05:43:52 字数 753 浏览 1 评论 0原文

我有两个域模型:

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',但它不起作用:-(

I have two domain models:

class Resource{
   String name

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

class ResourceGroup{
   String groupName

   static hasMany = [resources: Resource]
}

controller:

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

so and now in my 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>

my Question is how can I sort this "item.resources"? this is a persistent set of hibernate! I thought this could be handled with the mapping sort name: 'asc', but it doesn't work :-(

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

情痴 2024-12-27 05:43:52

尝试将 item.resources.sort { it.name } 替换为 "asc"

item.resources.sort { it.name }.reverse() 为“desc”

try item.resources.sort { it.name } for "asc",

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

抠脚大汉 2024-12-27 05:43:52

您不能对一对多或多对多关系进行默认排序。请参阅 此处的文档,特别注意底部的注释:

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

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

要执行您想要的操作,请考虑按照 Don 的建议创建一个选项卡库 此处

You cannot have a default sort on a one-to-many or many-to-many relationship. See documentation here, paying particular attention to the note at the bottom that says:

These mappings will not work for default unidirectional one-to-many or many-to-many relationships because they involve a join table. See this issue for more details. Consider using a SortedSet or queries with sort parameters to fetch the data you need.

The default sort you have specified actually does sort a list of Resource objects (i.e. if you got the list like this Resource.getAll() the list would be sort in the order you specified).

To do what you want consider creating a tab lib as Don suggests here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文