Ahojte,

skusim to napisat zrozumitelnejsie:

mam tabulku A, stlpce:

id
name

mam tabulku B, stlpce:
id
name

a potom mam tabulku AB (vazobna tabulka medzi A a B) , stlpce:
fk_a_id cudzi kluc do A
fk_b_id cudzi kluc do B.

priklad:

tabulka A:
1          Ivan
2          Peter
3          Jozo

tabulka B:
1          auto
2          bicykel
3          motorka
4          skuter

tabulka AB:
1        1
1         2
3         4
2         1
2         2
4         1

potrebujem cez hibernate napisat taky dotaz, ktory mi vyberie z
tabulky A len takych ludi, ktori maju auto a bicykel, teda ktory maju
presne taketo zaznamy:

x          1
x          2

v nasom pripade by to boli zaznamy z A tabulky: Ivan a Peter (id 1 a 2).

dakujem

Ivan

2010/8/9 Ondra Medek <[email protected]>:
> Zkusenost s tim nemam, ale nepomohl by "in" operator? Neco jako
>
> select A a from A where a.bList in (select B b from B where ...);
>
> 2010/8/5 Ivan Polak <[email protected]>:
>> Zdravim konferenciu,
>>
>> poprosil by som o pomoc pri porovnavani List<> objektov v hibernate .
>>
>> mam triedu A ktora ma List objektov typu B
>>
>> List<B> bList = new ArrayList<B>();
>>
>> teda v DB mam 3 tabulky, jednu pre entitu A druhu pre list bList
>> (tabulku oznacme AB), s cudzim klucom na tabulku A a s cudzim klucom
>> do tabulky B a tretiu tabulku pre entitu B.
>>
>> class B {
>> private Long id;
>> ....
>> }
>>
>> class A {
>> @ManyToMany(cascade = CascadeType.PERSIST, fetch = FetchType.EAGER)
>> ....
>> private Set<B> bList = new HashSet<B>();
>> }
>>
>> v tabulke A mam 1 zaznam, na ktory odkazuju 2 zaznamy z tabulky AB.
>>
>> potrebujem napisat taky SQL dotaz, ktory vyberie z tabulky A len tie
>> zaznamy, ktore maju presne urcenych x zaznamov v tabulke AB.
>>
>> napr. vyberiem si z tabulky B zaznam s id=1 a s id=4 (teda mam 2
>> objekty typu B) a chcem najst vsetky take zaznamy z tabulky A, ktore
>> maju v AB tabulke presne tieto 2 zaznamy.
>>
>> dufam, ze som to napisal aspon trocha zrozumitelne.
>>
>> dakujem
>>
>> Ivan
>>
>
>
>
> --
> Ondra Medek
>

Odpovedet emailem