grails find () с использованием 3 полей / столбцов (т.е. поиск с несколькими столбцами) - PullRequest
6 голосов
/ 16 ноября 2011

Я немного запутался в документации Grails HQL.Скажем, у меня есть класс домена с 3 полями,

class Example {
   String a 
   String b
   String c
 }

, и я хочу сделать эквивалент Example.findByAAndBAndC (), можете ли вы показать мне строку кода, которую я использовал бы для установки этогои передать 3 параметра?Обратите внимание, в документации сказано, что для findBy можно использовать не более двух полей.Мне нужно сделать 3 поля.

Спасибо

Ответы [ 3 ]

10 голосов
/ 16 ноября 2011

AFAIK, вы не можете использовать динамические искатели, если у вас есть более 2 предикатов. Вместо этого используйте критерий запроса:

def results = Example.withCriteria {
  eq('a', 'some-a')
  eq('b', 'some-b')
  eq('c', 'some-c')
}

Обновление

По умолчанию предикаты объединяются с использованием AND, если вы хотите использовать OR вместо:

def results = Example.withCriteria {
  or {
    eq('a', 'some-a')
    eq('b', 'some-b')
    eq('c', 'some-c')
  }
}
6 голосов
/ 16 ноября 2011

я использую в своем проекте:

Example.findAllByAIlikeAndBIlikeAndCIlike("${a}%","${b}%","${c}%",[max:5, offset:0, sort:"a", order:"asc"])

и все работает!

4 голосов
/ 16 ноября 2011

Ray

Есть несколько способов «найти» объекты.

findWhere:

Example.findWhere(a:"Hello", B:"World")
Example.findByAandB("a value", "b value)

Я бы посоветовал вам хорошо прочитать по адресу:

http://grails.org/doc/latest/guide/ и
http://grails.org/doc/latest/guide/single.html#5.4.2%20Criteria

Документация довольно хорошая и содержит несколько примеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...