Vsem dekuji, ted me jeste napadaji dve otazky:

1) jak se presne chova ORDER BY... tzn. jestli se to shlukuje "hierarchicky", nebo pokud se shoduji vsechny uvedene polozky, nebo shoduje-li se jednoa z nich.

2) jak takovy subselect implementovat do HQL. Dokumentace k HQL v referencni dokumentaci k Hibernate se mi zda prilis strucna. Dalsim problemem je, ze se mi nedari dat alias vytvorenemu objektu pri select new.

... a jeste jedna

3) jak docilit toho, aby se mi objekty predane new selectu nacetli cele. Jestli nejde vypnout lazy incializace primo v prikazu, nemuzu je pak nejak inicializovat explicitne?

S pozdravem,

Petr Gola

On 16/06/06, Petr Ferschmann <[EMAIL PROTECTED]> wrote:
Dobrý den,

omezení SQL je, že pokud dáte group by a současně order by musí order by být v group by.
To co chcete vy nejde jinak než subselectem (view takový subselect je)  a v něm to řadit. Takovéto chování má např. i PostgreSQL.


Petr Gola píše v Pá 16. 06. 2006 v 13:23 +0200:

Mozna (velmi pravdepodobne:) tomu spatne rozumim, ale myslel jsem, ze dle polozek uvedenych za GROUP BY se jednotlive radky vyberu shlukuji (agreguji). Pokud chci Prehled utridit narp. podle karta.karticka.nazev , v zadnem pripade nechci take shlukovat radky dle karta.karticka.nazev.

Zatim to mam resene na urovni databaze:

CREATE OR REPLACE VIEW prehled AS
 SELECT tabulka_karet.karticka_id,
        sum(tabulka_karet.a) AS a,
        sum(tabulka_karet.b) AS b
   FROM katalog_karta
  GROUP BY tabulka_karet.karticka_id;

Potom v Hibernate mapuji tridu Prehled na tento pohled (objekt karticka je pripojen z tabulky karticek pomoci @many-to-one pres karticka_id) a DAO metodou ziskavam serazeny seznam:

    return getHibernateTemplate().find("from Prehled prehled order by prehled.karticka.nazev");

Rad bych se toho mapovani na pohled zbavil a resil souhrnou metodou vracejici Prehledy implementovanou primo v DAO objektu pro ziskavani karet.

S pozdravem,

Petr Gola

On 16/06/06, Lukas Barton < [EMAIL PROTECTED]> wrote:
Petr Gola napsal(a):
pri (orderBy == null) dostanu ocekavany seznam Prehledu seskupenych dle id Karticek. Ale pri pokusu o serazeni pomoci order by dostanu chybove hlaseni, ze polozka dle ktere chci seznam utridit se musi objevit v group by. Asi by to chtelo pro to trideni jeste cele obalit do jednoho selektu, ale to se mi nejak nedari. Zatim jsem to vyresil v Hibermate jako mapovani objektu Prehled na view vytvorene v databazi. Ale moc se mi to nelibi, radsi bych to z toho dostal HQL dotazem.
Nic prece nebrani pole z order by doplnit automaticky i do group by.
Ted totiz "zneuzivate" lazy incializaci tridy Karta - tj. selectuje se jen pole karticka.id.
Kdyz si zapnete zobrazovani SQL prikazu uvidite celkem 3 dotaz. Dva budou na natazeni objektu typu Karta z databaze.

  Lukas Barton



Petr Ferschmann

SoftEU s.r.o.
-----------------------------------
Sady Petatricatniku 31
301 00 Plzen
Czech Republic
-----------------------------------
Phone: +420 373 729 300
Fax:   +420 373 729 301
Cell:  +420 775 638 008




Odpovedet emailem