createQuery Hibernate e projection

2 respostas
O

Estou usando o ejb 3.0 (que por consequencia usa o hibernate).
Eu estou fazendo uma query selelcionando apenas alguns campos do objeto.
Gostaria que de alguma maneira viesse um resultado assim

Iterator i = manager.createQuery("select f.codigo, f.descricao, f.departamento.codigo from Funcionario f").getResultList().iterator;
Funcionario f = (Funcionario) i.next();
f.getCodigo() // traz
f.getDescricao() // traz
f.getDepartamento().getCodigo() // traz
f.getSexo() // traz null, pois não estava na lista

Pelo que vi na documentacao ele traz um lista de Object[] onde cada posicao seria um valor da projecao.
Se alguem tivar alguma classe que resolve esse problema ou algum parametro estou grato.

2 Respostas

_fs

http://www.guj.com.br/posts/list/43457.java

M

Crie um constutor no seu pojo que coincida com os campos que vc deseja selecionar:

Funcionario (codigo, descricao, departamento … etc){

}

E depois utilize “select new” na sua query

List<Funcionario> lista = session.createQuery("select new br.caminho.completo.da.package.aqui.Funcionario(f.codigo, f.descricao, f.departameto.. etc) from Funcionario f").list();
Criado 17 de agosto de 2005
Ultima resposta 18 de out. de 2006
Respostas 2
Participantes 3