2012-12-06 127 views
0

代碼標準與多個表伊格加入

 DetachedCriteria criteria2 = DetachedCriteria.forClass(MasterResult.class); 
     criteria2.createAlias("masterCCHolders", "masterCCHolders", CriteriaSpecification.INNER_JOIN); 
     criteria2.createAlias("masterFlights", "masterFlights", CriteriaSpecification.INNER_JOIN); 
     criteria2.createAlias("masterPassengers", "masterPassengers", CriteriaSpecification.INNER_JOIN); 
     criteria2.createAlias("masterVendors", "masterVendors", CriteriaSpecification.INNER_JOIN); 

這產生以下查詢

select 
    this_.id as id49_4_, 
    this_.adults as adults49_4_, 
    this_.bookingdate as bookingd3_49_4_, 
    this_.children as children49_4_, 
    this_.depart_date as depart5_49_4_, 
    this_.email1 as email6_49_4_, 
    this_.fareprice as fareprice49_4_, 
    this_.first_name as first8_49_4_, 
    this_.infants as infants49_4_, 
    this_.last_name as last10_49_4_, 
    this_.phonenumber as phonenu11_49_4_, 
    this_.selectiontime as selecti12_49_4_, 
    this_.mastercurrentstatus as masterc13_49_4_, 
    masterccho2_.master_booking_id as master4_49_6_, 
    masterccho2_.id as id6_, 
    masterccho2_.id as id47_0_, 
    masterccho2_.first_name as first2_47_0_, 
    masterccho2_.last_name as last3_47_0_, 
    masterccho2_.master_booking_id as master4_47_0_, 
    masterflig3_.master_booking_id as master5_49_7_, 
    masterflig3_.id as id7_, 
    masterflig3_.id as id50_1_, 
    masterflig3_.direction as direction50_1_, 
    masterflig3_.fromcode as fromcode50_1_, 
    masterflig3_.master_booking_id as master5_50_1_, 
    masterflig3_.tocode as tocode50_1_, 
    masterpass4_.master_booking_id as master6_49_8_, 
    masterpass4_.id as id8_, 
    masterpass4_.id as id46_2_, 
    masterpass4_.first_name as first2_46_2_, 
    masterpass4_.last_name as last3_46_2_, 
    masterpass4_.master_booking_id as master6_46_2_, 
    masterpass4_.middle_name as middle4_46_2_, 
    masterpass4_.type as type46_2_, 
    mastervend5_.master_booking_id as master4_49_9_, 
    mastervend5_.id as id9_, 
    mastervend5_.id as id48_3_, 
    mastervend5_.locator as locator48_3_, 
    mastervend5_.master_booking_id as master4_48_3_, 
    mastervend5_.name as name48_3_ 
from 
    masterresult this_ 
left outer join 
    masterccholder masterccho2_ 
     on this_.id=masterccho2_.master_booking_id 
left outer join 
    masterflight masterflig3_ 
     on this_.id=masterflig3_.master_booking_id 
left outer join 
    masterpassenger masterpass4_ 
     on this_.id=masterpass4_.master_booking_id 
left outer join 
    mastervendor mastervend5_ 
     on this_.id=mastervend5_.master_booking_id 

查詢返回20行,其細,但是這也產生masterResult的1-20對象。

的模型結構就像

MasterResult包含

  • 集masterCCHolders的,
  • 集masterFlights的,
  • 集masterPassengers的,
  • 集masterVendors的

怎麼樣 解決這個問題?

1 MasterResult包含

  • 2設置masterCCHolders的,
  • 2設置masterFlights的,
  • 5設置masterPassengers的,
  • 1設置masterVendors的,

所以總2 * 2 * 5 = 20個記錄

我該如何擁有一個masterResult對象,其中包含一組大小爲2的masterCCholder,一組大小爲2的masterflights,一組masterpassengers大小爲5等等。

感謝

回答

1
criteria.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY); 
+0

真棒的幫助,非常感謝......! –