在属性上使用投影时,结果以列表的形式返回,其中元素的顺序与投影块中定义的顺序相同。同时,列表中缺少属性名称,这对开发人员来说确实是不利的,因为结果将被传递,调用者需要知道哪个值属于哪个属性。有没有办法从 Criteria 查询中返回一个映射,其中属性名称作为值的键?
所以,下面的代码:
def c = Trade.createCriteria()
def remicTrades = c.list {
projections {
property('title', 'title')
property('author.name', 'author')
}
def now = new Date()
between('publishedDate', now-365, now)
}
这将返回:
[['book1', 'author1']['book2', 'author2']]
相反,我希望它返回:
[[book:'book1', author:'author1'][book:'book2', author:'author2']]
我知道我可以在得到结果后以这种方式安排,但我真诚地认为标准应该使用属性别名来返回一个模仿 SQL 查询结果的映射列表,而不是一个平淡无奇的列表。