Grails: как совместить findAllBy и findAllByTag - PullRequest
1 голос
/ 12 ноября 2009

Поскольку я новичок в Grails и динамических языках, у меня есть несколько «надеюсь, простой» вопрос.

Я установил плагин taggable, который отлично работает. Существует массив с тегами. Я собираю для каждого тега набор данных с помощью findAllByTag. После этого я рандомизирую его и выбираю одну запись. Работает отлично. Теперь я решил не брать все объекты из БД. Мне нужно только все с определенным creteria (колонка БД customerID). Это будет выглядеть так:

def customerSet = Customer.findAllBycustomerID(params.customerID)

У меня работают оба запроса, но я не могу объединить их так, как хочу. Я пробовал что-то вроде

def hits = customerSet.findAllByTag(tag)

Но тогда я получаю

groovy.lang.MissingMethodException: нет сигнатуры метода: java.util.ArrayList.findAllByTag () применим для типов аргументов: (java.lang.String) значения: [mac]

Полагаю, я не могу сделать findAllByTag для такого списка.

Или я должен сделать это как-то так:

def customerSet = Customer.findAllBycustomerID(params.customerID.findAllByTag(tag)) ???

спасибо, Клаас

1 Ответ

1 голос
/ 13 ноября 2009

Я не уверен, что это работает с taggable, но вы можете использовать динамический искатель с двумя свойствами, например .findAllByCustomerIdAndTag (CUSTOMERID, тег)

Если это не сработает, вы можете использовать критерий, например:

Customer.createCriteria().list{
    eq('customerId',someCustomerId)
    tags{
        eq('name',someTag')
    }
}
...