Consulta no Hibernate (HQL ou Criteria) envolvendo herança  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
bonfarj
Java Ninja
[Avatar]

Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline

Imaginem que uma classe Pedido possui um atributo List<ItemPedido> itensPedido. A classe ItemPedido é abstrata, temos duas especializações, as classes ItemPedidoProducao e ItemPedidoFaturamento.

Eu queria criar uma consulta que retorna todos os pedidos onde itensPedido possui ao menos um ItemPedidoFaturamento. Como é possível fazer isso? Usei discriminator para o mapeamento, provisoriamente um amigo fez uma query com SQL para contornar o problema, mas queria fazer com HQL ou Criteria.

abraços!


IGOR BRITO ALVES
@igoralves
bonfarj
Java Ninja
[Avatar]

Membro desde: 28/03/2006 09:55:47
Mensagens: 298
Offline

Alguém sabe de algo?

IGOR BRITO ALVES
@igoralves
ro0llz
HelloWorld

Membro desde: 29/01/2011 11:20:54
Mensagens: 11
Offline

Não sei se é exatamente a resposta da sua situação, mas caso voce queira fazer um mapeamento usando herança cujo a classe "filho" seja mapeada pelo "pai" usando @PrimaryKeyJoinColumn, e usando extends no filho com a classe pai, então uma solução seria:

Você pode montar um método de pesquisar cujo por parâmetro será passado o objeto filho, entretanto o criteria será criado pela classe do objeto pai.
Em seguida adicione um criteria com restrição de "equals" , referenciando o nome do campo sequencial do pai e o valor desse campo.
E ao pedir o uniqueResult ao hibernate faça o "Cast" para a classe filho que seria entao o objeto final que teria todos os dados, dados do filho e os dados do seu respectivo pai.

Um exemplo da situação explanda abaixo:



Espero que possa ajudar,

GrBraz'
iogui
Debugger
[Avatar]
Membro desde: 27/01/2011 01:54:53
Mensagens: 67
Offline

bonfarj wrote:Imaginem que uma classe Pedido possui um atributo List<ItemPedido> itensPedido. A classe ItemPedido é abstrata, temos duas especializações, as classes ItemPedidoProducao e ItemPedidoFaturamento.

Eu queria criar uma consulta que retorna todos os pedidos onde itensPedido possui ao menos um ItemPedidoFaturamento. Como é possível fazer isso? Usei discriminator para o mapeamento, provisoriamente um amigo fez uma query com SQL para contornar o problema, mas queria fazer com HQL ou Criteria.

abraços!



Qual o objetivo da consulta? Se for apenas para usar em relatório, talvez seja melhor usar jdbc/sql mesmo pois usando uma abordagem OO vc vai ter que iterar itensPedido pra saber se tem alguém que seja instanceof ItemPedidoFaturamento e acho que isto não vai ser tão performático quanto uma query sql simples e direta usando exists.
Não sei se tem alguma forma ou hint pra resolver isto mais facilmente com ORM.

[]s
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team