hibernate a sub-select
Ivan Polák
info na infoportal.sk
Pondělí Leden 5 20:08:23 CET 2009
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_
dakujem
Ivan
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.
>>
Další informace o konferenci Konference