Grails 如何使用CreateCrietera获取多个列

Grails 如何使用CreateCrietera获取多个列,grails,gorm,hibernate-criteria,Grails,Gorm,Hibernate Criteria,我有一个域类,我只想查询一些字段。如何使用“创建条件”执行此操作 我正在使用这个标准,这是可行的,但我如何在输出中获得另一列 def cartitem=CartOrder.createCriteria().listDistinct{ eq("id",cartid) vendorproductinfo { eq('vendor',vendor)

我有一个域类,我只想查询一些字段。如何使用“创建条件”执行此操作

我正在使用这个标准,这是可行的,但我如何在输出中获得另一列

def cartitem=CartOrder.createCriteria().listDistinct{
                eq("id",cartid)
                vendorproductinfo
                {
                    eq('vendor',vendor)
                    projections{
                        property("productItem") 
                    }
                }
            }

由于此投影,您只能在结果中获得
productItem
列:

projections{
  property("productItem") 
}
如果希望返回整个
CartOrder
对象,只需删除以下内容:

def cartitem = CartOrder.createCriteria().listDistinct {
  vendorproductinfo {
    eq('vendor', vendor)
  }
}
更新 根据您在下面的评论,您实际想要的结果似乎是
Vendorproductinfo.productItem
Vendorproductinfo.price
。如果您不需要
CartOrder
的任何字段,那么我认为您可以将其从查询中完全删除

类似于以下的方法应该有效(尽管我不能100%确定我是否理解您的目标):


vendorproductinfo还有一个名为price的字段。我也希望该字段与productitem一起输出,但不希望输出完整的CartOrder对象。@saurabh-为什么只需要几个属性而不需要整个对象!也许你关心的是表现?相信我,这不会对性能造成太大影响。@如果cartorder域与vendorproductinfo有1:m关系,则vendor productinfo有vendor、productItem和price文件。我有cartorder对象和一个供应商id,现在我想得到所有供应商为的vendorproductinfo对象vendor@saurabh您可以将相关的域类添加到您的问题中吗?
def results = Vendorproductinfo.createCriteria().listDistinct {
  eq('vendor', vendor)
  projections{
    property("productItem") 
    property("price") 
  }      
}