Критерии для SELECT bla1, bla2 ОТ foo - PullRequest
       5

Критерии для SELECT bla1, bla2 ОТ foo

0 голосов
/ 10 сентября 2010

Мне нужен критерий, который выбирает только bla1 и bla2 из всех атрибутов данного домена

Foo.findAll() или

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

имеют:

SELECT * FROM foo

результаты = список всех атрибутов данного домена foo

want

SELECT bla1,bla2 FROM foo

, записанный как Критерии def c = Foo.createCriteria () def results = c {???}

Ответы [ 3 ]

1 голос
/ 10 сентября 2010

Я думаю, что для этого более естественно использовать 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]
   ...
}
0 голосов
/ 11 сентября 2010

Я сейчас использую namedQueries, которая отлично работает:

Класс предмета { Продукт продукт Строка что-то Показано Строка что-то скрытое

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()

Теперь остался только один вопрос, как ограничить класс, связанный с ownTo. Например, если у Product есть namedQuery «limitedObj». любой способ использовать это в свойстве Критерия?

0 голосов
/ 10 сентября 2010

Вам нужно использовать проекции

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