Java Grails向FindAllBydinList提供排序列表

Java Grails向FindAllBydinList提供排序列表,java,grails,groovy,Java,Grails,Groovy,我不想让结果重新排序 例如: defids=[7,9,5,6,12,2,10,1,42,13] 结果=Project.findallbydinlist(ids).collect{ projectUtil.createProjectDTO(it) } 然后,如果我得到创建的对象的ID,它们将按这种方式排序 我想保持同样的秩序有什么方法可以做到吗 提前感谢并为我糟糕的英语道歉:)您可以尝试使用getAll而不是findallbydinlist: def ids = [7, 9, 5, 6, 12

我不想让结果重新排序

例如:

defids=[7,9,5,6,12,2,10,1,42,13]
结果=Project.findallbydinlist(ids).collect{
projectUtil.createProjectDTO(it)
}
然后,如果我得到创建的对象的ID,它们将按这种方式排序

我想保持同样的秩序有什么方法可以做到吗


提前感谢并为我糟糕的英语道歉:)

您可以尝试使用
getAll
而不是
findallbydinlist

def ids = [7, 9, 5, 6, 12, 2, 10, 1, 42, 13]
result = Project.getAll(ids).collect {
    projectUtil.createProjectDTO(it)
}

我刚刚在集成测试中用一个类似的示例对其进行了测试,它返回的实例的顺序与ID列表中声明的顺序相同。

另一个选项是
with criteria

result = Project.withCriteria {
  'in'('id', ids)
}.collect { projectUtil.createProjectDTO(it) }

projectUtil.createProjectDTO()
做什么?
projectUtil.createProjectDTO()
创建一个名为ProjectDTO的Java对象,它只包含我的GSPIn性能中所需的属性,这两个答案中哪一个是最好的?您可以启用sql日志来查看生成的查询。我认为它们是相同的,所以区别在于代码的可读性。
result = Project.withCriteria {
  'in'('id', ids)
}.collect { projectUtil.createProjectDTO(it) }