Pessoal, tenho o método abaixo com sql nativo conforme podem ver. Quando executo essa sql no meu SGBD retorna os valores corretos (sem duplicar), só que quando executo via aplicação java, as colunas t.descricao, v.descricao as ve, g.descricao as g é retornada com valores iguais, até dei nome para as colunas, mas não resolveu. Alguém sabe o que pode estar ocorrendo?
public List<SolicitacaoDeterminacaoVO> buscarAmostraPorSolicitacao2(
Integer solicitacao) {
StringBuilder sql = new StringBuilder();
sql.append("select distinct a.codigo, a.cultura, a.profundidade, t.descricao, v.descricao as ve, g.descricao as g, p.nome from amostra a inner join solicitacaodeterminacao sol on sol.id_amostra = a.codigo inner join determinacao d on d.codigo = sol.id_determinacao inner join vegetacao v on v.codigo = a.vegetacao_codigo inner join topografia t on t.codigo = a.topografia_codigo inner join gleba g on g.codigo = a.gleba_codigo inner join solicitacaodeanalise s on s.codigo = sol.solicitacao_codigo inner join propriedade p on p.codigo = a.propriedade_codigo where s.codigo =" + solicitacao);
List<SolicitacaoDeterminacaoVO> listaRetorno = new ArrayList<SolicitacaoDeterminacaoVO>();
try {
Session session = HibernateUtil.getSessionFactory().openSession();
SQLQuery query = session.createSQLQuery(sql.toString());
List lista = query.list();
for (Object obj : lista) {
Object[] valores = (Object[]) obj;
SolicitacaoDeterminacaoVO linha = new SolicitacaoDeterminacaoVO();
linha.setAmostra(valores[0]);
linha.setCultura(valores[1]);
linha.setProfundidade(valores[2]);
linha.setTopografia(valores[3]);
linha.setVegetacao(valores[4]);
linha.setGleba(valores[5]);
linha.setPropriedade(valores[6]);
System.out.println(linha.getAmostra());
System.out.println(linha.getCultura());
System.out.println(linha.getProfundidade());
System.out.println(linha.getTopografia());
System.out.println(linha.getVegetacao());
System.out.println(linha.getGleba());
listaRetorno.add(linha);
}
} catch (Exception e) {
e.printStackTrace();
}
return listaRetorno;
}