Nella mia applicazione di gestione delle attività, gli utenti dovrebbero essere in grado di filtrare le attività in base a: assignedTo
, priority
, status
e/o dueDate
dinamicamente la creazione di una query basata su params essere passato a un controller
Non sono sicuro su come per creare una query dinamica in quanto creerà una query basata sui parametri disponibili.
Ad esempio:
se ho un URL, ad esempio: task/index?assignedTo=1&status=2
posso costruire una query basata solo su questi due parametri. Il metodo Sono abituato a è il
Task.findAllByAssignedToAndStatus(
User.get(params.assignedTo),
TaskStatus.get(params.status)
)
io non, ovviamente, vuole implementare un metodo a secco scrivendo fuori ogni findAllBy
query per ogni possibile combinazione di parametri URL.
C'è un buon modo per farlo in graal?
E 'banale per generare il nome cercatore facendo qualcosa come '" findAllBy $ {params.collect {k, v -> k.capitalize()} .join ('And')} "', ma come fa a sapere che 'assignedTo' dovrebbe caricare un'istanza' User' e ' status' dovrebbe fare riferimento a un 'TaskStatus'? –
D'accordo, non vorrei farlo in questo modo. È per una tesi quindi voglio che il codice sia il più pulito possibile. –
Potrei suggerire una query denominata - http://grails.org/doc/2.2.1/ref/Domain%20Classes/namedQueries.html - quindi puoi filtrare per utente e stato. Penso che facciano rock! – marko