Dúvidas em consultas HQL!
29/09/2011 12:18
1
Olá, pessoal.

Estou com uma certa dificuldade para retornar um valor e também não sei se estou tomando o caminho correto.
Tenho as classes abaixo:

class Empresa {

String nome

String toString(){
return nome
}
}

class CentroDeCusto {

String numero
String nome
Empresa empresa

static belongsTo = [empresa:Empresa]

String toString(){
return "$nome ($empresa)"
}
}

class Cargo {

String nome
CentroDeCusto centroDeCusto

static belongsTo = [centroDeCusto:CentroDeCusto]

String toString(){
return nome
}
}


Como faço para retornar os cargos pertencentes aos centro de custos da empresa "XYZ"??

Eu estava tentandofazer isso, mas não está dando certo:

def retornaCargos = {

def cargos = []

def cc = CentroDeCusto.findAllByEmpresa(Empresa.findByNome('XYZ'))

cargos = Cargo.findAll("from Cargo as cargo " +
"where cargo.centroDeCusto in $cc")

}


Existe uma forma melhor de fazer essa busca entre entidades? Alguém sabe dizer porq essa consulta está dando erro?

Obrigado!
Tags: HQL, criterias, finders, belongsTo


0
Oi Carlos, criterias seriam uma opção mais interessante neste caso.

Você poderia escrever algo como a consulta abaixo:


def cargos = Cargo.withCriteria {
centroDeCusto {
empresa {
eq("nome", "o valor qualquer")
}
}
}


Eu até escrevi sobre isto no meu blog algum tempo atrás. Se bobear, te ajuda.
Segue o link: http://www.itexto.net/devkico/?p=885


0
Ual!! Excelente o poder de fogo das criterias!! Muito obrigado, Kico!

Agora estou apenas com dificuldades de retornar o valor para o "create.gsp"

O metodo ficou assim:

class UsuarioXYZController {

def retornaCargos = {

def cargos = Cargo.withCriteria {
centroDeCusto {
empresa {
eq("nome", "XYZ")
}
}
}
[cargos : cargos]
}


E o gsp ficou assim:


<tr class="prop">
<td valign="top" class="name">
<label for="cargo"><g:message code="usuarioXYZ.cargo.label" default="Cargo" /></label>
</td>
<td valign="top" class="value ${hasErrors(bean: usuarioXYZInstance, field: 'cargo', 'errors')}">
<g:select name="cargo.id" from="${cargos}" optionKey="id" value="${usuarioXYZInstance?.cargo?.id}" />
</td>
</tr>


Não está dando nenhum erro, apenas retornando null... :-(
29/09/2011 16:06


0
Dúvida boba. Prepare-se: você não tá sem querer colocando um valor fixo lá não? Este "XYZ"?
Dica: use o grails console pra testar suas consultas. É uma mão na roda também.



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