Fórum Selecionar apnas alguns campos em uma query #409190
08/11/2011
0
Entidade pessoa( nome, cpf, endereco, etc...), no momento de criar a query preciso que seja selecionado apenas os campos nome e cpf, conforme exemplo abaixo.
Porem esta dando erro ao executar nao sei se é pela sintaxe.
Tambem gostaria de saber se ao usuar a native queries, tem alguma diferença, pois seria uma saida.
@NamedQueries({
@NamedQuery(
Name=”findAllpessoa”,
Query=”select p.nome, p.cpf from pessoa p ”),
})
Desde já Obrigado
Fernando Luiz.
Fernando Silva
Curtir tópico
+ 0Posts
08/11/2011
Davi Costa
att Davi
Gostei + 0
08/11/2011
Fernando Silva
Ao tentar forca o erro novamente, para postar, funcionou perfeitamente.
Valeu.
Gostei + 0
08/11/2011
Robson Teixeira
att
robson
Gostei + 0
09/11/2011
Dyego Carmo
vc cria um contrutor com 2 strings nesta sua classe e pode fazer algo do genero:
select new br.com.devmedia.MinhaPessoa(p.nome,p.sobrenome) from MinhaPessoa p;
ele vai criar a classe utilizando o construtor , muito legal ;)
Gostei + 0
09/11/2011
Fernando Silva
vc cria um contrutor com 2 strings nesta sua classe e pode fazer algo do genero:
select new br.com.devmedia.MinhaPessoa(p.nome,p.sobrenome) from MinhaPessoa p;
ele vai criar a classe utilizando o construtor , muito legal ;)
Diego voce salvou meu dia, era exatamente isto que precisava, porque eu até consegui selecionar apenas alguns campos, porem o getresultlist vinnha como array de object e nao do tipo que eu queria, ai tive que fazer uma adaptação tecnica para converter para o tipo esperado com demais campos nulos, veja abaixo. Agora resolvi a questao de forma elegante, muito Obrigado a você e aos demais.
Só pra explicar a necessidade disto, é que preciso que as tabelas vinculadas a esta classe sejam carregadas só no momento de edição, e para listar e consultar usuarei só a tabela principal com os campos basicos, ou seja usarei o recurso lazy, só quando necessario sem precisar desabilita-lo, pois ajuda muito na produtividade, não sei se fui claro, mas é isto.
E mais uma vez obrigado
//Antiga NamedQuery que resultava lista de object
@NamedQuery(name = GerCliente1.findAll, query = SELECT g.idcodigo1, g.nome1, g.cgcCpf1, g.insestRg1,
+ g.nomfan1, g.contato1 ,g.obs1, g.insmun1
+ FROM GerCliente1 g Order By g.idcodigo1 ),
// Nova NamedQuery que resulta o que eu quero objeto tipo GerCliente1
@NamedQuery(name = GerCliente1.findAll, query = SELECT new entidades.ger.GerCliente1(g.idcodigo1,
+ g.nome1, g.cgcCpf1, g.insestRg1,
+ g.nomfan1, g.contato1 ,g.obs1, g.insmun1)
+ FROM GerCliente1 g Order By g.idcodigo1 ),
//Adaptação tecnica para o resultado com a antiga namedquery
lRetorno = q.getResultList();
for(int iCount = 0;iCount < lRetorno.size();iCount++){
cCliente = new GerCliente1();
vCliente = (Object[]) lRetorno.get(iCount);
cCliente.setIdcodigo1((Long) vCliente[0]);
cCliente.setNome1((String) vCliente[1]);
cCliente.setCgcCpf1((String) vCliente[2]);
cCliente.setInsestRg1((String) vCliente[3]);
cCliente.setNomfan1((String) vCliente[4]);
cCliente.setContato1((String) vCliente[5]);
cCliente.setObs1((String) vCliente[6]);
cCliente.setInsmun1((String) vCliente[7]);
lCliente.add(cCliente);
}
return lCliente;
//Com a que voce passou voltou o que era
return q.getResultList();
Gostei + 0
09/11/2011
Davi Costa
att Davi
Gostei + 0
09/11/2011
Fernando Silva
att Davi
Ok, desculpe a bobeira, mas como fecha o chamado ?
Gostei + 0
18/11/2011
Dyego Carmo
Gostei + 0
19/12/2011
Fernando Silva
Ok, olhei e não vi esta opção de fechar, poderia fechar pra mim, creio que nao tenho acesso.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)