Hibernate

Srs, tenhho um aplicação que usa Hibernate com Store Procedures para fazer pesquisas.
Meu problema uma procedure, se eu executar manualmente me retorna 3 linhas conforme o esperado, porem quando exevuto pelo hibernate recebo de retorno 3 linhas porém estas tres linhas são iguais. É como se o primeiro registro fosse duplicado nos outros dois.

No arquivo de mapeamento a proc esta assim :

<sql-query name="listaCarros" callable="true"> <return alias="listaCarros" class="CarroEntity"/> {call DBAPRD1.pSeltCarro (?)} </sql-query>

Ao chamar no java faço assim

Assim que executo a linha acima, recebo de retorno 3 linhas iguais. Um resultado diferente se rodo a procedure em um cliente de banco.

Alguem tem uma dica do que eu poderia verificar, ou o que pode causar este problema ?

Vlew

Olá Amigo,

Quando eu utilizava procedure com hibernate, eu utilizava sql nativo com o postgres, e chamava a procedure da seguinte forma descrita abaixo:

public List montaTabelaTabnet() throws DAOException{
try{

        Session s = HibernateUtil.getSession();
    	
    	String sql = " SELECT * FROM rhcnet_tabela_hospitalar() ";
    	
    	Query q = s.createSQLQuery( sql	)
    		.addScalar("OUT_ANO", Hibernate.STRING)
    		.addScalar("OUT_TOTAL_CASOS", Hibernate.STRING)
    		.addScalar("OUT_TOTAL_ANALITICO", Hibernate.STRING)
    		.addScalar("OUT_TOTAL_NAO_ANALITICO", Hibernate.STRING)
    		.addScalar("OUT_PERC_GERAL", Hibernate.STRING)
    		.addScalar("OUT_PERC_ANALITICO", Hibernate.STRING)
    		.addScalar("OUT_PERC_NAO_ANALITICO", Hibernate.STRING);	    	
    	
    	List<ItemAnoTabnet> resultado = new ArrayList<ItemAnoTabnet>();

    	List<Registro> retorno = q.list();
		Iterator it = retorno.iterator();
		
		while ( it.hasNext() ){
			Object[] linha = (Object[]) it.next();
			
			resultado.add( new ItemAnoTabnet(
							Integer.parseInt( linha[0].toString() ),
							linha[1] != null ? Double.parseDouble( linha[1].toString() ) : 0,
							linha[2] != null ? Double.parseDouble( linha[2].toString() ) : 0,
							linha[3] != null ?	Double.parseDouble( linha[3].toString() ) : 0,
							linha[4] != null ? linha[4].toString() : "0", 
							linha[5] != null ? linha[5].toString() : "0", 
							linha[6] != null ? linha[6].toString() : "0" 
						
					) );
			
		}
		
    	return resultado;
    	
	}catch( HibernateException e ){
		e.printStackTrace();
		return null;
	}
	

}

Onde [ rhcnet_tabela_hospitalar() ] é uma procedure.

Espero ter ajudado,
Abraços