开发者

Criteria for SELECT bla1, bla2 FROM foo

开发者 https://www.devze.com 2023-01-15 08:16 出处:网络
I want a criteria that only selects bla1 and bla2 from all attributes of a given domain Foo.findAll() or

I want a criteria that only selects bla1 and bla2 from all attributes of a given domain

Foo.findAll() or

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

have:

SELECT * FROM foo

results = List of all attributes of given domain foo

want

SELECT bla1,bla2 FROM foo

written as Criteria def c = Fo开发者_JS百科o.createCriteria() def results = c { ??? }


I think it's more natural to use HQL for this:

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

The returned value will be a List of Object[], so if for example bla1 is a String and bla2 is an integer you'd access the data like

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


You need to use projections

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


I am now using namedQueries which works fine:

class Item { Product product 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
}

}

querying for restricted items

Item.restrictedObj(item).list()

Now only one question ist left, how to restrict class connected with belongsTo. For example if Product has a namedQuery "restrictedObj" too. any way to use this in criteriea property?

0

精彩评论

暂无评论...
验证码 换一张
取 消