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