Ahoj,

Každopádně myslím, že otázkou "jak udělám v Criteria API select z poddotazu" už řešitele zbytečně svazujete. Někdy je lepší se netrápit hlavolamem, jak nacpat nějaký nestandardní dotaz do Criteria API nebo HQL, když tu je x způsobů, jak to udělat v SQL a jsou snad i 
Svätá pravda. Už viac krát som to vyriešil nejakým zložitejším VIEW priamo v DB a pre Hibernate ostali len primitívne príkazy. Aj teraz to zrejme tak dopadne. Ale zaujímalo ma principiálne, či je Hibernate možné použiť, keď vo FROM nie je tabuľka, ale subselect. Ale zrejme nie.

Vďaka,
Rastislav "Bedo" Siekel



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



On 27. 6. 2013 21:56, Tomáš Záluský wrote:
Dobrý den,

mně to přijde spíš jako problém pro analytické funkce.
Něco jako:
select min(detail_id) keep (dense_rank first order by detail_time desc) from detail
Ano, syntaxe je pro ANSI sqlistu hrozná, ale je to silný nástroj.

Každopádně myslím, že otázkou "jak udělám v Criteria API select z poddotazu" už řešitele zbytečně svazujete. Někdy je lepší se netrápit hlavolamem, jak nacpat nějaký nestandardní dotaz do Criteria API nebo HQL, když tu je x způsobů, jak to udělat v SQL a jsou snad i čitelnější, typicky např.
session.createSQLQuery("select {m.*} from master {m} ...").addEntity("m",Master.class).list()

A i kdybyste chtěl zůstat u Criteria API, pořád by nestačilo Restrictions.sqlRestriction (viz rada mého předchůdce s exists)?

Tomáš Záluský


______________________________________________________________
Od: "Rastislav Siekel" <sie...@prosoft.sk>
Komu: Java <konference@java.cz>
Datum: 27.06.2013 15:03
Předmět: Hibernate SELECT bez FROM tabuľky

Zdravím vospolok,



chcel by som sa spýtať, či niekto neriešil nasledujúci problém:



V Oracle mám tabuľky master a detail. Mám master a chcem k nemu nájsť posledný detail, čo spravím v SQL takto:



... AND detail_id =

(

SELECT * FROM

(

SELECT detail_id

>FROM detail
ORDER BY detail_time DESC

)

WHERE rownum = 1

)

...





Tu som narazil na problém, že Hibernate pomocou Criteria API asi nevie spraviť "SELECT FROM (...) WHERE ...".

Aj DetachedCriteria, aj Criteria si vyžadujú Entitu (DTO), nad ktorou pripravia SQL príkaz. Je nejaká možnosť ako toto obísť?



Vďaka,

Rastislav "Bedo" Siekel







Ing. Rastislav Siekel

Prosoft s.r.o., Kuzmányho 8, 010 01 Žilina, Slovakia

E-mail : <sie...@prosoft.sk>

Tel : 041/562 54 91

Fax : 041/562 54 97

Mobil : 0905 34 00 20









Odpovedet emailem