Hibernate  XML
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Autor Mensagem
rogeriosantos77
Java Ninja
[Avatar]

Membro desde: 30/07/2007 15:00:53
Mensagens: 281
Localização: Jerusalém
Offline

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 :



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



Rogerio L Santos
@roglusa - Twitter
[WWW] [MSN]
Zenas
JavaChild
[Avatar]

Membro desde: 17/09/2008 10:39:20
Mensagens: 123
Offline

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<ItemAnoTabnet> 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
 
Índice dos Fóruns » Ferramentas, Frameworks e Utilitários
Ir para:   
Powered by JForum 2.1.8 © JForum Team