Pessoas tenho dois resultados de consulta que não estou entendendo.
Quando consulto usando essa hql :
String hql = "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.
obrigado.
tenta tirar o fetch E o left (que não é necessário)
fiz o que o colegal orientou mas nada mudou.
quando eu tiro fetch:
lista vem com objetos tipo Object:
[[Ljava.lang.Object;@b2604e, [Ljava.lang.Object;@d0c62b, [Ljava.lang.Object;@824d2a…]]
quando eu cologo fetch:
lista vem com objetos do tipo da classe mapeada:
[sigpr.modelo.bean.Empregado@256, sigpr.modelo.bean.Empregado@ca, sigpr.modelo.bean.Empregado@cb…]
O que vcs sugerem ?
[quote=efcjunior]fiz o que o colegal orientou mas nada mudou.
quando eu tiro fetch:
lista vem com objetos tipo Object:
[[Ljava.lang.Object;@b2604e, [Ljava.lang.Object;@d0c62b, [Ljava.lang.Object;@824d2a…]]
quando eu cologo fetch:
lista vem com objetos do tipo da classe mapeada:
[sigpr.modelo.bean.Empregado@256, sigpr.modelo.bean.Empregado@ca, sigpr.modelo.bean.Empregado@cb…]
O que vcs sugerem ?[/quote]Mas vc tirou o left?
tirei amigão…Olha como está meu método:
@SuppressWarnings("unchecked")
@Override
public List<Empregado> listar() {
String hql = "from Empregado e " +
"join e.area " +
"where e.icAtivo = 1 and e.area.areaVinculada.nuGerencia = 259 " +
"order by e.noEmpregado asc";
Query consulta = this.getSession().createQuery(hql);
return consulta.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.
Retirei. Meu método ficou assiM:
@SuppressWarnings("unchecked")
@Override
public List<Empregado> listar() {
String hql = "from Empregado e " +
"join e.area " +
"where e.icAtivo = 1 and e.area.areaVinculada.nuGerencia = 259 " +
"order by e.noEmpregado asc";
Query consulta = this.getSession().createQuery(hql);
return consulta.list();
}