grails - 有什么方法可以从 Grails 中的 createCriteria 返回带有某些字段的 Map 吗?

标签 grails grails-orm

我有一个对象,我需要在其中查询并将其作为 Map 返回,但我不想再次迭代该对象,因为我已经在进行查询并且它的性能可能很差。

List<MyObject> myObjectList = MyObject.createCriteria().list(params) {
...
}

但我需要的是像这样的 map :
myObjectList.each { MyObjectList myObject ->
   myMap.add([person: myObject.person, myObject: myObject, listIntoObject: myObject.listInsideObject as List])
}

我找到了另一种方法来获取这样的 map ,但它仍然不是从我用 GORM 查询的列表中获取 map 的更好方法......
myMap = myObjectList.collect{ [person: it.person, myObject: it, listIntoObject : it.invoiceDetails as List] }

有没有更好的方法来使用 GORM 获取 map ?

最佳答案

您可以使用 org.hibernate.transform.Transformers将结果转换为实体映射

import org.hibernate.transform.Transformers

def criteria = MyObject.createCriteria()
criteria.resultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)

def myObjectList = criteria.list(params) {
    ...
}

您也可以退回到 HQL。引用 更新 a similar的部分回答更多细节。

关于grails - 有什么方法可以从 Grails 中的 createCriteria 返回带有某些字段的 Map 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32237680/

相关文章:

database - 这些自动生成的 Db 文件是什么?

Grails 字段插件 : Select tag for one-to-many relationships

spring - Grails:是否可以避免延迟服务初始化?

grails - 如何在 GORM 中按排序顺序持久化数据

Grails - 按查询中的两个字段排序

Grails 2.4.4,多个数据源,在 Domain 类上使用 GORM finder 结果为 : Method on class [User] was used outside of a Grails application

Grails 2.3.4 数据库 View 作为域类

grails - GORM 标准查询 : Finding Children with specific properties

grails - 将 Grails 域类设置为 "No-Insert Mode"

mysql - 使用复合键在 GORM 中对现有数据库关系建模