Selecionar apnas alguns campos em uma query
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
Posts
08/11/2011
Fernando Silva
Ao tentar forca o erro novamente, para postar, funcionou perfeitamente.
Valeu.
08/11/2011
Robson Teixeira
att
robson
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 ;)
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();
09/11/2011
Davi Costa
att Davi
09/11/2011
Fernando Silva
att Davi
Ok, desculpe a bobeira, mas como fecha o chamado ?
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.
Clique aqui para fazer login e interagir na Comunidade :)