SELECT bla1,bla2 FROM foo的标准

时间:2010-09-10 08:54:28

标签: hibernate grails criteria

我想要一个只从给定域的所有属性中选择bla1和bla2的标准

Foo.findAll()

def c = Foo.createCriteria()
def results = c {}

有:

SELECT * FROM foo

results =给定域名foo的所有属性列表

SELECT bla1,bla2 FROM foo

写成标准 def c = Foo.createCriteria() def results = c {   ??? }

3 个答案:

答案 0 :(得分:1)

我认为使用HQL更为自然:

def results = Foo.executeQuery('SELECT bla1,bla2 FROM Foo')

返回的值将是一个List of Object [],所以如果例如bla1是一个String而bla2是一个整数,你可以访问数据,如

for (row in results {
   String bla1 = row[0]
   int bla2 = row[1]
   ...
}

答案 1 :(得分:0)

您需要使用投影

def c = Foo.createCriteria()
results = c.list {
    projections {
        property('bla1')
        property('bla2')
    }
}

答案 2 :(得分:0)

我现在使用的namedQueries工作正常:

class Item {     产品产品     String somethingShown     String somethingHidden

static belongsTo = [product:Product]
static constraints = {
    somethingShown()
    somethingHidden()
}
    static namedQueries = {
        restrictedObj { item ->
                projections {
                    property('product')
            property('somethingShown')
        }
        eq 'id', item.id
}

}

查询受限制的物品

Item.restrictedObj(item).list()

现在只剩下一个问题,如何限制与belongsTo相关的类。例如,如果Product也有一个namedQuery“restrictedObj”。在标准财产中使用它的任何方式?