为什么当我在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"},..]
答案 0 :(得分:0)
原因在于文档本身。
投影用于改变结果的性质。
使用投影时,结果将成为list
list
个each
,其中包含投影属性的值,而不是匹配对象实例的列表。这是设计使用的documented。
使用collect
的方法完全可以接受。尽管如此,我个人会使用Ruby on Rails 4
,但结果是一样的。