如何使用createcriteria获取多个列

时间:2012-02-14 12:24:56

标签: grails gorm hibernate-criteria

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

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

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

1 个答案:

答案 0 :(得分:1)

由于此预测,您只会在结果中获得productItem列:

projections{
  property("productItem") 
}

如果您想要返回整个CartOrder对象,只需删除它:

def cartitem = CartOrder.createCriteria().listDistinct {
  vendorproductinfo {
    eq('vendor', vendor)
  }
}

更新

根据您在下面的评论,您在结果中实际需要的内容似乎是Vendorproductinfo.productItemVendorproductinfo.price。如果您不想要CartOrder的任何字段,那么我认为您可以完全从查询中删除它。

以下内容应该有效(尽管我并不是100%确定我理解你的目标):

def results = Vendorproductinfo.createCriteria().listDistinct {
  eq('vendor', vendor)
  projections{
    property("productItem") 
    property("price") 
  }      
}