2016-08-04 2 views
1

Метод создания hibernate createalias() используется для создания объединений. Когда я вызываю метод s.iterator(), hibernate генерирует другой запрос выбора, чтобы получить дочернюю запись? По моему пониманию, он генерирует единственный запрос выбора, чтобы получить как родительские, так и дочерние записи, используя join.Критерий метода createalias для спящего режима генерирует дополнительный запрос выбора

Criteria ct = sn.createCriteria(Vendor.class);  
Criteria ct1= ct.createAlias("children", "cust"); 
List<Vendor> l = ct.list(); 
Iterator<Vendor> i = l.iterator(); 
while (i.hasNext()) { 
    Vendor v = (Vendor) i.next(); 
    System.out.println("name " + v.getVendorname()); 
    Set<Customer> s = v.getChildren(); 
    Iterator<Customer> it = s.iterator(); 
    while (it.hasNext()) { 
     Customer c = it.next(); 
     System.out.println("custname " + c.getCustomername()); 
    } 
} 

Отображение файлов:

<hibernate-mapping> 
    <class name="com.criteria.example.Customer" table="customer"> 
     <id name="customerid" column="cid"> 
      <generator class="native" /> 
     </id> 
     <property name="customername" type="string"> 
      <column name="cname" length="10" not-null="true" /> 
     </property> 
    </class> 
</hibernate-mapping> 
<hibernate-mapping> 
    <class name="com.criteria.example.Vendor" table="vendor"> 
     <id name="vendorid" column="vid"> 
      <generator class="native" /> 
     </id> 
     <property name="vendorname" type="string"> 
      <column name="vname" length="10" not-null="true" /> 
     </property> 
     <set name="children" inverse="false" cascade="all" lazy="false"> 
      <key column="vendid" not-null="true" /> 
      <one-to-many class="com.criteria.example.Customer" /> 
     </set> 
    </class> 
</hibernate-mapping> 
+0

Привет, может кто-нибудь дайте мне знать ответ на этот вопрос – Pani

ответ

1

После многих поисков на Google, наконец, я получил ответ на этот вопрос. Создание дополнительных запросов - ошибка в спящем режиме.

Смежные вопросы