Ahoj,
no tak to je hodne zajimavy, protoze podle me je to spravne ... zkusil bych
malou drobnost, prehodit poradi tabulek v
prvnim dotazu na ...
select new
com.freightservice.model.TenderCarrierBestBidInformationResultItem(tender,
tenderBid)
from TenderBid tb, Tender t where t = tb.tender and tb.carrier = ? and
tb.bidPrice = (
select min(tb2.bidPrice) from tenderBid tb2 where tb2.carrier =
tb.carrier and tb2.tender = tb.tender
)
Mohlo by dojit k prehozeni poradi tabulek a pak by mohl byt vzdy jiny alias.
Ale kazdopadne bych to postnul jako bug do
HIbernate ...
> return getHibernateTemplate().find("select new
> com.freightservice.model.TenderCarrierBestBidInformationResultItem(" +
> "tender, tenderBid) " +
> "from Tender tender, TenderBid tenderBid " +
> "where tender = tenderBid.tender " +
> "and tenderBid.carrier = ? " +
> "and tenderBid.bidPrice = (" +
> "select min(b.bidPrice) " +
> "from tenderBid b " +
> "where b.carrier = tenderBid.carrier " +
> "and b.tender = tenderBid.tender)", carrier);
>
> vygeneruje to nasledovny select:
>
>
> select
> tender0_.id as col_0_0_,
> tenderbid1_.id as col_1_0_
> from
> tender tender0_,
> tender_bid tenderbid1_
> where
> tender0_.id=tenderbid1_.fk_tender_id
> and tenderbid1_.fk_carrier_id=?
> and tenderbid1_.bid_price=(
> select
> min(tenderbid1_.bid_price)
> from
> tender_bid tenderbid1_
> where
> tenderbid1_.fk_carrier_id=tenderbid1_.fk_carrier_id
> and tenderbid1_.fk_tender_id=tenderbid1_.fk_tender_id
> )
>
> pre tabulku tender_bid je pouzity rovnaky alias : tenderbid1_
>
> Jiří Mareš wrote / napísal(a):
>> Ahoj,
>>
>> to mi prijde divny, ja jsem si myslel, ze alias se vytvari castecne ze
>> jmena tabulky a castecne pomoci poradoveho cisla
>> tabulky, tudiz tam 2 stejne aliasy byt nemuzou. Neni problem jinde.
>> Pouzivate aliasy v originalnim HQL dotazu?
>>
>> Zkuste sem poslat ten HQL dotaz ...
>>
>> S pozdravem
>>
>> Ivan Polák napsal(a):
>>
>>> pouzivam v Hibernate vytvaranie select-ov pomocou HQL
>>> getHibernateTemplate().find("select....."). mam ale select, kde pouzivam
>>> v "hlavnom select-e" 2 tabulky (prepojene cez id-cka) a vo where
>>> podmienke je sub-select, kde pouzivam jednu z tych 2 tabuliek co v
>>> hlavnom selecte.
>>>
>>> a tu je prave problem Hibernate si pri vytvarani SQL dotazu vytvori pre
>>> tieto tabulky v hlavnom dotaze a sub-selecte rovnaky alias, takze
>>> samozrejme dostavam iny select a nie to co som chcel.
>>>
>>> neviete prosim, ako tento problem odstranit.
>>>
>
--
Jiří Mareš (mailto:[email protected])
ČSAD SVT Praha, s.r.o. (http://www.svt.cz)
Czech Republic