Grails 3.3 GORM CriteriaBuilder функции на свойства - PullRequest
0 голосов
/ 31 мая 2018

Я использую Grails 3.3 и GORM CriteriaBuilder для большинства моих запросов в эти дни, но я застрял в том, как вызывать функции для свойств - например, вызывая функцию hour () для свойства Date.Если бы я использовал где DetachedCriteria, у меня могло бы быть что-то вроде этого:

def whereQuery = Student.where {
    hour(registration) = 15
}

, чтобы найти всех студентов, которые зарегистрировались между 15:00 и 15: 59.

Однако, если я использую CriteriaBuilderвместо этого я не могу сделать это:

def c = Student.createCriteria()
def results =  c.list {
    eq 'hour(registration)', 15
}

Есть ли способ выполнить это в DSL-сборке?Я знаю, что могу вернуться к классу домена и определить отображение, которое извлекает час из поля даты, но это выглядит неуклюже.

1 Ответ

0 голосов
/ 31 мая 2018

Попробуйте sqlRestriction:

def results = Student.withCriteria {
    sqlRestriction 'hour(registration) = 15'
}

См. 7.5.6. Using SQL Restrictions в http://gorm.grails.org/latest/hibernate/manual/index.html#criteria

...