| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2011 11:00:47
|
rogeriosantos77
Java Ninja
![[Avatar]](/images/avatar/6f760a053c4fc2b0e7a369b42fd7f68c.jpg)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 19/04/2011 12:33:22
|
Zenas
JavaChild
![[Avatar]](/images/avatar/7c47a1fc4d30bf6b65d2f41704c982b7.jpg)
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
|
|
|
 |
|
|
|
|