Áno, tak som to nakoniec spravil - SQL
VIEW cez
SELECT master JOIN detail ... WHERE detail_id IN (SELECT
MAX(detail_id) KEEP (DENSE_RANK LIST ORDER BY time)...
Pre hibernate to namapujem ako 1:1 a všetky podmienky na master aj
detail tak budú úplne jednoduché. Súhlasím, že treba nechať na
Hibernate len to jednoduché. Vždy to bude len podmnožina SQL
možností...
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 28. 6. 2013 9:25, Petr Franta wrote:
Pak to asi stačí spojit s tím co posílal kolega
předemnou, asi nějak takto:
SELECT xyz FROM master WHERE exists (SELECT 1 FROM detail WHERE
detail.master_id = master.id
AND detail.sloupce <> konec AND
detail.detail_id in (select min(detail_id) keep
(dense_rank first order by detail_time desc) from detail WHERE detail.master_id
= master.id))
, nebo s tím vaším sub-selectem. Je to asi spíš o
SQL (HQL).
Snad napoví:
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#querycriteria-detachedqueries
nebo v HQL
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/#queryhql-subqueries
Petr
2013/6/28 Rastislav Siekel <sie...@prosoft.sk>
Vďaka za názor, ale príkaz
SELECT xyz FROM master WHERE exists (SELECT 1 FROM
detail WHERE detail.master_id = master.id AND
detail.sloupce <> konec)
vyberie všetky záznamy Master, pretože ku každému existuje
nejaký detail, ktorý hovorí, že oprava nie je ukončená -
prvý detail. Mňa zaujíma atribút ukončenie len na
poslednom detaile.
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 18:44, Petr Franta wrote:
Myslím si, že by to mělo jít
vyřešit pomocí podmínky "exists" nebo "not exists":
SELECT xyz FROM master WHERE exists (SELECT 1 FROM
detail WHERE detail.master_id = master.id AND detail.sloupce
<> konec)
Nebo něco podobného.
Petr
2013/6/27 Rastislav Siekel <sie...@prosoft.sk>
Možno som to nenapísal úplne jasne - skúsim
inak
Mám záznamy o oprave - hlavičky, a ku každej
môže byť 1 - N detailov (priebeh opravy, na
poslednej je aj prípadne ukončenie).
Vytváram SELECT pre zoznam opráv, ktoré ešte
nemajú koniec, t.j. s podmienkou, či posledný
detail ešte nemá zadaný koniec (tie predošlé
ho určite nemajú zadaný, takže obyčajný JOIN
by mi vybral všetky opravy, lebo ku každému
master existuje určite aspoň jeden detail,
ktorý vyhovuje podmienke).
posledný detail zistím v SQL tak ako som
uviedol nižšie.
Rastislav "Bedo" Siekel
P.S.
>From detail d where d.master=:master
order by d.order
Tento príkaz vypíše pre 1 master všetky
detaily, čo určite nie je to, čo hľadám.
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 16:11, Martin Beránek
wrote:
Není moc jasné zadání, ale hql
From detail d where d.master=:master
order by d.order
Podle mě dělá co požadujete
Martin
Dne 27.6.2013
15:36 "Rastislav Siekel" < sie...@prosoft.sk>
napsal(a):
Otočiť to na vyhľadávanie
"detail JOIN master" by v tomto
prípade nešlo. Výsledok má byť
zoznam mastrov (filtrovaný na
ďalšie podmienky) s tým, že sú
zadané podmienky aj na posledný
detail.
Principiálne hľadám, či je možné v
Hibernate spraviť SELECT * FROM(
SELECT...)
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 15:11, ŠVARC Jiří
wrote:
Nevím
jestli jsem dobře porozuměl,
ale nešlo by to realizovat
vyhledáním v seznamu detailů
s kritériem odkazu na
mastera, nastavením řazení
a query.setMaxResults(1)?
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
|