如何在 GORM 中按排序顺序保存数据

Posted

技术标签:

【中文标题】如何在 GORM 中按排序顺序保存数据【英文标题】:How to persist data in a sorted order in GORM 【发布时间】:2013-11-22 20:18:41 【问题描述】:

这是一个新手问题,任何帮助将不胜感激。我有一个类Item如下。

类项目 字符串名称 // 其他属性 ... 静态约束 = 名称(空白:假,唯一:真) // 其他约束 ...

如何在 Grails/GORM 中按排序顺序保存 Items?意思是,如果我这样做了

新项目(名称:'a').save(刷新:true,failOnError:true) 新项目(名称:'c').save(刷新:真,failOnError:真) 新项目(名称:'b').save(刷新:真,failOnError:真) println Item.getAll().name

我应该得到[a, b, c]。谢谢!

【问题讨论】:

【参考方案1】:

保留并不重要,重要的是你检索它的方式,你可以简单地按照以下方式进行

println Item.list().sort() 

println Item.list().sort() //write your groovy clouser here to sort asc and dec 

【讨论】:

谢谢!但是,我想知道是否有任何方法可以首先按排序顺序保存数据?原因是,如果它是一个有很多行的大表并且如果我非常频繁地检索数据,我认为 sort() 会更慢(因为每次我检索数据时它都会进行排序)。背景是,项目是项目的词汇表,我将不那么频繁地向表中添加新项目,但会非常频繁地检索数据。任何 cmets 将不胜感激。 要以特定顺序保留项目,您可以将您的集合映射为列表。详情请见docs.codehaus.org/plugins/servlet/mobile#content/view/228171330。 谢谢@rcgeorge23。我可以使用 SortedSet 进行自定义排序。我找到了您引用的文档的最新版本 (grails.org/doc/latest/guide/GORM.html#sets,ListsAndMaps)。感谢您提供非常有用的提示!【参考方案2】:

将此添加到您的域类中

static mapping = 
    sort name: "desc" //"asc"

【讨论】:

这很好用,谢谢!不过有一条评论,我必须使用 Item.list(),而不是 Item.getAll()。即使包含映射,getAll() 方法似乎也不会打印排序列表。我喜欢这种映射方法,因为我不必每次检索数据时都进行 sort()。 排序名称:“desc”不保证插入顺序。这是一种自定义查询结果排序依据的默认属性的方法 (grails.org/doc/latest/ref/Database%20Mapping/sort.html) @cantoni:有什么办法可以保证广告的顺序吗?我想我明白你的意思了 - 谢谢你的澄清。

以上是关于如何在 GORM 中按排序顺序保存数据的主要内容,如果未能解决你的问题,请参考以下文章

如何按保存顺序对表格视图中的数据进行排序?

如何在 Core Data 中按顺序存储数据? [复制]

GORM级联保存的顺序取决于字段名称?真的吗?

如何在数据库表中按字母顺序对列进行排序? [关闭]

使用 JQuery Sortable 重新排序后如何将 .NET Gridview 行顺序保存到数据库

如何在swift 4中重新排序单元格后保存tableView顺序