Consulta SQL [Iniciante em Grails]
13/01/2013 15:56
0
Olá pessoal, sou iniciante em Grails e estou com o seguinte problema.

Tenho duas classes de domínio chamadas Ameaca e Item. O relacionamento entre elas é N x N.

Em uma gsp inicial, são exibidos todos os itens cadastrados no BD (cada item é um checkbox). Tendo os itens selecionados, iremos para uma próxima tela onde serão listadas as ameaças cadastradas no BD, porém que estejam relacionadas aos itens selecionados na tela anterior.

Exemplo:

1) Itens cadastrados: item 1, item 2, item 3.
2) Ameacas cadastradas: ameaca 1, ameaca 2, ameaca 3, ameaca 4.
3) Ameaca_itens cadastradas: item 1 - ameaca 2, item 2 - ameaca 3.

Na tela inicial, são exibidos os itens cadastrados (1). Na tela seguinte, caso sejam selecionados os itens 1 e 2, serão listadas as ameaças 2 e 3. O problema é que não estou conseguindo fazer essa consulta no banco.

Seguem os códigos.

Ameaca.groovy

class Ameaca {

String desc_ameaca
static hasMany = [itens: Item]

static constraints = {
desc_ameaca (blank: false, nullable: false, size: 10..100)
}
}


class Item {

String desc_item
static belongsTo = Ameaca
static hasMany = [ameacas: Ameaca]

static constraints = {
desc_item (blank: false, nullable: false, size: 10..100)
}
}


Processo.Controller

class ProcessoController {

def index() {
redirect(action: "list_item", params: params)
}

//lista dos itens
def list_item(Integer max) {
params.max = Math.min(max ?: 10, 100)
[itemInstanceList: Item.list(params), itemInstanceTotal: Item.count()]
}

//lista de ameacas
def list_ameaca(Integer max) {
String fim = ""

//string que guarda os ids dos itens selecionados
params?.check.each {
fim += it.value
}

//como eu faço a busca aqui???
def ameacas = Ameaca.executeQuery("select a.desc_ameaca from Ameaca a where ???")

//e como exibir na tela???
params.max = Math.min(max ?: 10, 100)
[ameacaInstanceList: Ameaca.list(params), ameacaInstanceTotal: Ameaca.count()]
}
}


Desculpem pela mensagem grande, mas não sabia como explicar sem colocar todo o código.
Tags: Consultas; SQL


1
Fala Brother!

Primeiramente seja bem vindo ao forúm! Vc pode usar criteria para fazer essa consulta

Ex:

List<Item> = Item.withCriteria {
'in'('ameaca', listaAmeaca)
}


Nesse exemplo retorna uma lista de Item passando uma lista de Ameaca! Espero que ajude!

Abraço!



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto