Napríklad Hibernate s Oracle 10 po nastavení:

/Query.setFirstResult(x);
Query.setMaxResults(y);
/
vygeneruje SQL:

select
        *
    from
        ( select
            row_.*,
            rownum rownum_
        from
            ( select
                alias1_.column1,
                alias1_.column2,
                ....
                alias1_.columnN,
            from
<TABLE> alias1_ ) row_
        where
            rownum <= ?
        )
    where
        rownum_ > ?

To je asi presne to, čo chcete.

Rastislav "Bedo" Siekel

------------------------------------------------------------------------
Ing. Rastislav Siekel
Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia
E-mail : <sie...@prosoft.sk> <mailto:sie...@prosoft.sk>
Tel : 041/562 54 91
Fax : 041/562 54 97
Mobil : 0905 34 00 20

On 11. 3. 2010 13:37, Lukas Barton wrote:
Hibernate to dela - metoda *setMaxResults*
Ale nemusi to chodit na vsech DB, zalezi na konkretnim dialektu - jeste nedavno to neumel pro MS SQL v kombinaci s *setFirstResult*.

Z tech dialektu se da vykoukat konkretni SQL implementace pro dane databaze.

  Lukas

2010/3/11 Oto Buchta <ta...@buchtovi.cz <mailto:ta...@buchtovi.cz>>

    Zdravím,
    mám tabulku o milionech záznamů, kde primárním klíčem je long, ale
    nejedná se o seqenci.
    Dívám se po generickém nástroji, který by mi vrátil pouze N záznamů s
    nejvyšším indexem menším než nějaké X,
    tedy umí něco, co by se mělo v JDBC řešit takto:
    Connection.prepareStatement("select * from tabulka where klic<X order
    by klic desc").setMaxRows(N);

    Jenomže toto je na řešeno na straně JDBC driveru, nikoli na straně
    databáze. Když to chci udělat databázovým strojem,
    musím to řešit pro každou DB zvlášť:
    Oracle: select * from tabulka where klic<X and rownum=N order by
    klic desc
    MySQL: select * from tabulka where klic<X order by klic desc limit 1,N

    Znáte takový generický nástroj, popřípadě dokážete poradit, jak
    nastavit Hibernate či iBatis či cokoli jiného, aby mi tuto službu
    poskytlo?
    Já ne a kamarád Gůgl taky nenapověděl.

    Dík moc,
    --
    Oto 'tapik' Buchta, ta...@buchtovi.cz <mailto:ta...@buchtovi.cz>,
    http://tapikuv.blogspot.com


Odpovedet emailem