Problema com Hibernate HQL - GROUP BY  XML
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Autor Mensagem
Rangel Zutin
Thread.start()
[Avatar]

Membro desde: 24/01/2009 10:29:39
Mensagens: 41
Localização: Sao Paulo - Brazil
Offline

Amigos,

Estou levando uma surra da HQL.
Tenho minha classe AccountToPay (Entity) e quero fazer a soma (SUM) de todos os valores (AP.amount) agrupados fornecedor (SP.supplier) se a a conta esta paga ou nao (AP.paid) mas estou tendo a seguinte Exception. Seguem meus codigos. Qualquer ajuda ou comentario sao bem-vindos.

EXCEPTION:

ENTITY:

DAO:

TESTE:

Valeu pessoal!
Rangel Zutin
Thread.start()
[Avatar]

Membro desde: 24/01/2009 10:29:39
Mensagens: 41
Localização: Sao Paulo - Brazil
Offline

Pessoal,

pelo que eu analisei, o Hibernate nao esta montando a query da maneira correta. Segue a query.



Nao entendi porque ele busca os campos supplier1_.description e supplier1_.name, mas pra fazer dessa maneira ele nao teria que agrupar esses campos? Estou usando HQL de maneira errada?

Obrigado!
partenon
JavaChild
[Avatar]
Membro desde: 27/06/2010 15:08:10
Mensagens: 103
Localização: Brno, Czech Republic
Offline

Quando voce manda o Hibernate retornar um objeto (e nao suas propriedades individuais), o Hibernate na verdade faz um select no banco de dados pelas colunas individuais. Isso para garantir que a coluna X estara na posicao Y, de forma que ele consiga mapear fielmente.

Entao, uma saida que eu vejo para o seu caso eh mandar agrupar tambem pelos campos extras que o Hibernate especifica (supplier.id, description e name). Outra saida eh vc usar "native SQL query", mas dai vc precisa usar um result transformer, para informar ao Hibernate como mapear o retorno da query.

http://www.google.com/profiles/partenon
[WWW]
Rangel Zutin
Thread.start()
[Avatar]

Membro desde: 24/01/2009 10:29:39
Mensagens: 41
Localização: Sao Paulo - Brazil
Offline

Oi Paternon. Foi isso mesmo que eu fiz. Mandei agrupar os campos extras e deu tudo certo. Estou estudando Hibernate e tambem fiz o mesmo exemplo usando "native SQL query" e ResultTransformer. Porem estou tendo um outro problema quando uso setResultTransform passando como parametro o Transformers.aliasToBean, ao inves de passar um newResultTransformer.

Assim funciona:


Assim nao funciona:


E gera a seguinte Exception:


De qualquer maneira irei criar um novo topico soh pra isso. Obrigado pela forca.
 
Índice dos Fóruns » Persistência: Hibernate, JPA, JDBC e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team