Pessoas tenho dois resultados de consulta que não estou entendendo.
Quando consulto usando essa hql :
Stringhql="from Empregado e "+"left join fetch e.area "+"where e.icAtivo = 1 and e.area.areaVinculada.nuGerencia = 259 "+"order by e.noEmpregado asc";
Ele me retorna uma lista de array de objetos tipo Empregado. Com essa query ele não deixa o carregamento preguisoço.
Se eu tirar o “fetch”, ele retorna uma lista de array de Objects. E isso me atrapalha porque tenho que fazer o cast pra poder acessar um atributo de empregado.
Quero manter o carregamento lazy e acessar um atributo do objeto empregado normalmente sem fazer cast.
@SuppressWarnings("unchecked")@OverridepublicList<Empregado>listar(){Stringhql="from Empregado e "+"join e.area "+"where e.icAtivo = 1 and e.area.areaVinculada.nuGerencia = 259 "+"order by e.noEmpregado asc";Queryconsulta=this.getSession().createQuery(hql);returnconsulta.list();}
Do jeito que está ele retorna uma lista de objects. Nâo consigo entender as situações:
1- Já que ele retorna uma lista de object porque não dá erro de cast devido meu método ter um tipo de retorno: List
2- Já que uma variável tipo List consegue referenciar essa lista porque quando vou iterar com for(Empregado emp: listaEmpregado) me dá um erro de cast.
E
efcjunior
Retirei. Meu método ficou assiM:
@SuppressWarnings("unchecked")@OverridepublicList<Empregado>listar(){Stringhql="from Empregado e "+"join e.area "+"where e.icAtivo = 1 and e.area.areaVinculada.nuGerencia = 259 "+"order by e.noEmpregado asc";Queryconsulta=this.getSession().createQuery(hql);returnconsulta.list();}