воскресенье, 4 мая 2008 г.

grails: gorm & query by criteria

Есть такая симпатичная штука в hibernate, а как следствие, и в grails. Штука очень хорошая для составления динмаических запросов, в зависимости от того, допустим, по какому набору полей надо искать. И есть в hibernate criteria api такая штука как alias'ы - метод формулировать условия для ассоциаций.

Я очень удивился, когда не нашёл в документации grails ничего об алиасах, ну и полез в гугл - куда ж ещё. Всё оказалось, как обычно, просто. Допустим есть сущность Foo с ассоциацей bar, у которой условие необходимо наложить на поле baz. Пишется это так:

def c = Foo.createCriteria()
def someList = c{
bar {
eq("baz", "some value")
}
}

Вот примерно так. bar {...} и является той самой ассоциацией. Вложенность таких вызовов с клозуром может быть какая угодно.

Кстате, пока писал, подумал, как команда grails собирается реализовать gorm на базе JPA текущей (а это планируется в grails 1.1)? В JPA ведь нет никакого criteria api, это чисто hibernate заморочка. Интересно будет посмотреть.

Комментариев нет: