2009-11-12 1 views
1

, поскольку я новичок в Grails и динамических языках, у меня есть несколько вопросов, которые мы надеемся на простой.Grails: Как совместить findAllBy и findAllByTag

Я установил плагин taggable, который отлично работает. Существует массив, в который входят теги. Я собираю для каждого тега набор данных с помощью findAllByTag. После этого я рандомизирую его и выбираю одну запись. Прекрасно работает. Теперь я решил не брать все объекты из БД. Мне нужно всего лишь с определенной creteria (DB customer 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

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

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

Customer.createCriteria().list{ 
    eq('customerId',someCustomerId) 
    tags{ 
     eq('name',someTag') 
    } 
} 
Смежные вопросы