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

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.

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

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

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!

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%'

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)

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

obrigado