HQL, como pesquisar códigos em um set de objetos?

6 respostas
eduardo_lopes

e aí moçada, quase duas da madruga e eu aqui sofrendo.
seguinte, tenho o bean:

class Produto {

     ...
     private Set opcionais;
     ...
   
    //gets & sets
  }

  public Opcional {
     
    private int id;
    private Produto produto;

   //gets & sets
     
  }

e o mapeamento:

<set
			name="opcionais"
			table="produtoOpcionais">
			<key column="produto"/>
			<many-to-many
				column="opcional"
				class="bean.Opcional"/>
		</set>

agora como eu faço uma query que me retorne todos os produtos que possuam alguns opcionais, como se fosse um “IN” no SQL, se eu tenho apenas os id’s dos opcionais?

estou usando o hibernate2.

6 Respostas

passos

Eu nunca precisei utilizar um in mas acho que isso deve funcionar:

from Produto p where p.opcionais.id in (valor, valor, valor)
_fs
eduardo_lopes

passos, da maneira q vc colocou não dá, pq o objeto opcionais não possui o atributo “id” por ser do tipo Set, quem possui “id” é o objeto do tipo Opcional que está dentro do Set.

Lipe, eu li essa parte, mas funciona quando é um atributo comum, como no caso cat.name, agora eu possuo um Set com objetos dentro, assim eu teria de fazer algo como:

from Produto prd where produto.opcionais[0].id in (1,2,3)

manja? só que aí eu só pesquisaria na posição 0, queria ver em todas as posições da lista, se elas possuem os códigos do IN.

Necessariamente não precisa ser um IN, qualquer outro recurso que me permita pesquisar os códigos dentro do Set.

Valeu!

_fs
from Produto prd join prd.opcionais op where op.id in ( 1, 2, 3 ) 
from Produto prd join prd.opcionais op where op.tipo LIKE 'farol%'
passos

So de curiosidade acho que seu eu nao tivesse esqueci o join :stuck_out_tongue: funcionaria

from Produto p join p.opcionais where p.opcionais.id in (valor, valor, valor)
eduardo_lopes

graaaande lipe, valeu!
num tinha entendido o porque desses joins :oops:

obrigado

Criado 12 de julho de 2005
Ultima resposta 12 de jul. de 2005
Respostas 6
Participantes 3