Передача списка перечисления в критерии - PullRequest
3 голосов
/ 23 ноября 2010

У меня есть домен Payment

class Payment {
  String name
  PaymentType paymentType
}

PaymentType - это ENUM

для поиска всех платежей определенного типа оплаты просто

def results = Payment.createCriteria.list = {
  'in' ('paymentType', PaymentType.valueOf(params.paymentType))
}

как мне справиться с ситуацией, когда я хочу найти все платежи по нескольким типам платежей, т.е. если params.paymentType является массивом?

Ответы [ 2 ]

6 голосов
/ 23 ноября 2010

Если paymentType - это массив, вы можете сделать что-то вроде этого:

def results = Payment.createCriteria().list {
   'in' ('paymentType', params.paymentType.collect{PaymentType.valueOf(it)})
}
0 голосов
/ 03 августа 2012

@ ataylor:

Я не совсем уверен ... но не должно ли это быть

def results = Payment.createCriteria().list { 'in' ('paymentType',new params.paymentType.collect{PaymentType.valueOf(it)}) }

или вы получите ошибку

groovy.lang.MissingPropertyException: No such property: params for class: grails.orm.HibernateCriteriaBuilder

...