Tak zkus HQL:
select from A a join s.b where b.doprava='auto' or b.doprava='bicykel';

viz treba 
http://patf.net/blogs/index.php?blog=2&c=1&more=1&pb=1&tb=1&title=many_to_many_in_hql

2010/8/11 Ondřej Fafejta <[email protected]>:
> Zdravím ještě jenou,
>
> po konzultaci s kolegama z práce jsme přišli na 2 možná řešení
> (napíšu v čistém SQL)
>
> Požadujeme vyhledat osoby, které mají zároveň "auto" a "bicykel"
>
> varianta 1:
>
> SELECT a.* FROM a
> WHERE (SELECT count(*) FROM ab WHERE ab.b_id IN(1,2) AND ab.a_id=a.id)=2;
>
> varianta 2: EXISTS
>
> SELECT a.* FROM a
> WHERE exists(SELECT ab.a_id FROM ab WHERE ab.b_id=1 AND ab.a_id=a.id)
> AND exists(SELECT ab.a_id FROM ab WHERE ab.b_id=2 AND ab.a_id=a.id);
>
>
> Fafi
>



-- 
Ondra Medek

Odpovedet emailem