Hej, załóżmy że mam 3 tabele:

KLIENT (IDKLIENT, IMIE, NAZWISKO, ADRES)
PRODUKT (IDPRODUKT, NAZWA, CENA)
ZAMOWIENIA (ID_ZAMOWIENIA,IDKLIENT, IDPRODUKT, CZAS)

Hibernate utworzy dla takiego zestawu pliki tj.:

  • Klient.java
  • Produkt.java
  • Zamowienie.java
  • ZamowienieId.java
    oraz pliki Klient.hbm.xml, Produkt.hbm.xml i na koniec Zamowienie.hbm.xml, które cześć kodu będzie mniej więcej taka:
<hibernate-mapping> <class name="pkg.Zamowienia" table="zamowienia" catalog="myd1"> <composite-id name="id" class="pkg.ZamowieniaId"> <key-property name="idklient" type="short"> <column name="IDKLIENT" /> </key-property> <key-property name="idprodukt" type="byte"> <column name="IDPRODUKT" /> </key-property> </composite-id> <property name="czas_zamowienia" type="timestamp"> <column name="CZAS" length="19" not-null="true" /> </property> </class> </hibernate-mapping>

I teraz moje pytanie dotyczy zapytania HQL, który należy napisać aby pobrać za pomocą tabeli zamówienia takie informacje jak: kto zamówił (czyli informacja z tabeli KLIENT) oraz co zamówił (czyli informacja z tabeli PRODUKT) i kiedy (czyli informacja z tabeli ZAMOWIENIA).

Z tego co pamiętam, gdzieś czytałem to hibernate (hql) umożliwia napisanie tego prostym zapytaniem. Ok jeżeli ktoś nie zrozumiał o co mi chodzi, to chcę taki otrzymać z takiego kodu sql, kod HQL dla hibernate:

SELECT kl.nazwisko, pr.nazwa, zam.czas FROM Zamowienia zam, Klienci kl, Produkt pr WHERE zam.IDKLIENTA=kl.IDKLIENTA AND zam.IDPRODUKT=pr.IDPRODUKT

Czy isteieje jakiś prosty sposób czy też należy wiązać tabele ze sobą ?