Consultas
26/02/2013 11:35
0
Utilizo a sintaxe para retornar uma consulta já utilizei com varios tipos de variaveis mudando a forma de pesquisa como data e string
sintaxe:(arquivo empresacontroller
return [ c:Empresa_icms.findAllByCidade(params.cid)]
O problema esta no tipo porque cidade é um tipo inteiro porque é o id do relacionamento entre as tabelas Empresa_icms e Cidade, com este tipo seria inteiro a pesquisa esta dando erro qual sintaxe utilizo para consultas com inteiros...
Tags: findAllBy


0
Olá thiago, não sei se entendi direito mas, provavelmente seu parâmetro está vindo como string então tente fazer assim Empresa_icms.findAllByCidade(Integer.parseInt(params.cid)). Não sei se seria a melhor forma, mas talvez resolva.

Flw
26/02/2013 13:29


0
Thiago, você pode fazer de várias formas, pode usar HQL :

[list]
HQL tal qual no Hibernate
[/list]

Aqui no fórum tem esses exemplos de criteria que podem te servir :


http://www.grailsbrasil.com.br/post/show/2019
http://www.grailsbrasil.com.br/post/show/2161
26/02/2013 13:34


0
Acho que fiz besteira na hora de formatar como lista que não saíu o Criteria.


Se eu entendi bem você quer pegar uma lista de cidades do Empresa_icms, porém na requisição só vem o código e no relacionamento de Empresa_icms tem um objeto, então no findByCidade não dá pois deveria passar o objeto para comparar, então se for isso mesmo, dá para fazer com HQL, Criteria ou criando um objeto Cidade, colocando as propriedades a serem comparadas e passando no findByCidade (Acho que colocando apenas id ele encontra, nunca tentei).
26/02/2013 13:51


0
Pedro acho que não foi isso exatamente que quis dizer...
tenho duas tabelas uma empresa e outra cidades, quando preencho o campo cidade na tabela empresa é feito um relacionamento muitos pra muitos. Até o que esta funcionando, quero retornar em uma consulta por exemplo todas empresas que estão na cidade de São Paulo o parametro é passado pelo formulario de pesquisa do msm modo que é inserido utilizando um relacionamento e listando todas as cidades possíveis.
26/02/2013 18:22


0
e ainda consultando o banco ele quarda somente o campo id da tabela cidade na tabela empresa como esperad de um relaconamento chave primaria e chave estrangeira
26/02/2013 18:25


0
Você poderia postar o código das duas classes pra que possa entender melhor e tentar te ajudar ?
27/02/2013 14:00


0
package teste

class Cidade {

static constraints = {
}
String nome
String estado
static hasMany = [empresa:Empresa]
String toString(){
"${nome}-${estado}"
}
}

package teste

class Empresa {

static constraints = {
}
String razaoSocial
String cnpj
String status
String obaservacoes
Date dataRevisao
Boolean produto
static belongsTo = [cidade:Cidade,estado:Estado]
}
27/02/2013 14:06


0
return [ c:Empresa.findAll("from empresa where cidade_id =1")]
desta forma ele retorna um erro :
empresa is not mapped [from empresa where cidade_id =1]
27/02/2013 14:27


1
mude para : return [ c:Empresa.findAll("from Empresa as e where e.cidade.id = 1")]
27/02/2013 18:18


1
Pois o findAll chama um HQL e a HQL se refere aos objetos e não a tabela.
27/02/2013 18:18


0
funcionou...........
27/02/2013 18:59


0
Caso o valor da a ser comparado viesse por parametro como ficaria o parametro detro da query?
27/02/2013 19:08


0
return [ c:Empresa.findAll("from Empresa as e where e.cidade.id = ${params.cid}")]
funcionou deste jeito
27/02/2013 19:33


0
Você pode colocar assim : Empresa.findAll("from Empresa as e where e.cidade.id = ?", [params.cid]), e a medida que acrescentares outros '?' você colocar vírgula e acrescenta o valor, exemplo : Empresa.findAll("from Empresa as e where e.cidade.id = ? and e.cidade.estado = ?", [params.cid, params.estado])
04/03/2013 11:25



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