Oi Maurício,
no caso do uso de plugins pra este tipo de atividade, normalmente o resultado sempre é o menor denominador comum, pois o objetivo do plugin é abraçar o maior número possível de possibilidades.
Na situação que você está expondo (se é que eu a estou entendendo corretamente), talvez o mais interessante seja você implementar o seu próprio mecanismo de busca. Neste caso, eu recomendo você usar criterias para executar a sua busca, pois elas permitem que você escreva código como o abaixo.
Imagine que seja uma busca por um atributo cujo nome possa ser selecionado de um combobox e seja enviado para o seu controlador, que, em seguida, o enviará para um service ou alguma outra classe aonde você inclua sua lógica de negócio. Você poderia implementar código similar ao abaixo:
def busca(nomeAtributo, valor) {
Entidade.withCriteria {
eq(nomeAtributo, valor)
}
}
Ou então, poderia também buscar por mais de um campo. Imagine que você receba um map no qual as chaves correspondam aos nomes dos campos e os valores ao que você queira buscar.
def buscaCabulosa(mapa_busca) {
Entidade.withCriteria {
for (campo in mapa_busca.keySet) {
eq(campo, mapa_busca[campo])
}
}
}