Sorting DefaultGroovyMethod排序导致版本更改和数据库更新

Sorting DefaultGroovyMethod排序导致版本更改和数据库更新,sorting,grails,groovy,gorm,database-update,Sorting,Grails,Groovy,Gorm,Database Update,我有一个域对象列表,我想按特定属性进行排序。Groovy提供了许多函数以“简单”/“Groovy”的方式处理列表 问题是 myDomainList.sort{it.position} 导致更新myDomain表中的版本。 我想要的是没有(任何)hibernate调用(数据库更改)的预期排序行为 如何实现这一点?排序会改变它正在处理的集合,除非您这样使用它: myDomainList.sort( false ) { it.position } 这需要3个参数,第一个是Iterable本身,第二

我有一个域对象列表,我想按特定属性进行排序。Groovy提供了许多函数以“简单”/“Groovy”的方式处理列表

问题是

myDomainList.sort{it.position}
导致更新
myDomain表
中的
版本
。 我想要的是没有(任何)hibernate调用(数据库更改)的预期排序行为


如何实现这一点?

排序
会改变它正在处理的集合,除非您这样使用它:

myDomainList.sort( false ) { it.position }
这需要3个参数,第一个是Iterable本身,第二个是
boolean
(用于决定是否要修改或创建新集合,而不是修改原始集合),第三个参数是闭包


在前一种情况下,当
sort
修改列表时,域类被标记为dirty,因此事务关闭时将立即进行刷新。

您也可以使用
myDomainList.toSorted{it.position}
@EmmanuelRosa Correct,但这只能从Groovy 2.4获得。如果OP使用的是不支持Groovy 2.4的较旧版本的Grails,
toSorted()
将不适用。