2017-02-15 14 views
0

У меня 2 domainClasses, как показано ниже:Горм фильтр на колонке hasMany

class Customer { 
    def name 
    static hasMany = [accounts:Account] 
} 

class Account { 
    def accountNo 
    def type 
} 

Здесь тип учетной записи может быть «Сохранение», «Текущий», «FD»

Я хочу написать критерии поиска всех тех клиентов, у которых есть учетные записи «Сохранение», «Текущий».

Какими должны быть критерии, я попытался с помощью ниже:

def customers = Customer.createCriteria().list { 
    accounts { 
     and { 
      eq('type','Saving') 
      eq('type','Current') 
     } 
    } 
} 

Но когда он выполняет его создать внутреннее соединение, которое дает 0 результат.

+0

Что произойдет, если вы используете OR вместо AND? –

+0

Как я хочу получить всех клиентов, у которых есть оба типа учетных записей –

ответ

2

Вы можете использовать or вместо and как предложено Ю. Тарион или использовать in:

def types = ["Savings", "Current"] 
def customers = Customer.createCriteria().list { 
    accounts { 
     "in" "type", types 
    } 
} 
+0

Фактически этот запрос возвращает клиентов, которые имеют либо тип «Сбережения», либо «Текущий», но на самом деле я хочу, чтобы клиенты, у которых по крайней мере оба типа учетных записей, у них может быть больше, чем эти 2 типа счетов, а также «Экономия», «Текущий» или «Сбережения», «Текущий», «FD» и т. д. –

+0

Теперь я получил вас. На самом деле это немного сложно, и я не уверен, можете ли вы сделать это с помощью критериев. SQL выглядел бы так: выберите * от клиента, где id (выберите customer_accounts_id из customer_account, где account_id = 1), и идентификатор в (выберите customer_accounts_id из customer_account, где account_id = 2) См. Http://stackoverflow.com/questions/ 7364969/how-to-filter-sql-results-in-a-has-many-through-relation –

+0

Я пробовал следующим образом, но его не генерировал соответствующий вывод: def results = Customer.withCriteria { accounts.each { 'in' "id", новый DetachedCriteria (Account) .build { прогнозы { property ('customer.id') } э ('типа'), это }} –

 Смежные вопросы

  • Нет связанных вопросов^_^