在createCriteria上使用属性时可以作为对象返回吗?

时间:2015-05-20 18:36:19

标签: grails

为什么当我在property()上使用createCriteria时,会返回一个列表而不是对象?如果不放property()给我整个对象而不是列表? [[1, 'John', 'Tusk'],[2, 'Nila','Hans'],...]

def employees = User.createCriteria().list{
    ...
    projections{
        property("id")
        property("pd.firstName")
        property("pd.lastName")
    } 
}
def results = []
employees.each{
    results <<  [id: it[0], name: it[1] + " " + it[2]]
}

不是使用employees.each,而是使用另一种方式将其呈现为JSON:

[{"id":10,"name":"Erik Tucker"},{"id":83,"name":"Jimmy Sun"},..]

1 个答案:

答案 0 :(得分:0)

原因在于文档本身。

  

投影用于改变结果的性质。

使用投影时,结果将成为list listeach,其中包含投影属性的值,而不是匹配对象实例的列表。这是设计使用的documented

使用collect的方法完全可以接受。尽管如此,我个人会使用Ruby on Rails 4,但结果是一样的。