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.

Odpovedet emailem