1
Hibernate createalias()メソッドを使用して結合を作成します。私がs.iterator()メソッドを呼び出すとき、hibernateは子レコードを取得するために別のselectクエリを生成していますか?私の理解によれば、それは結合を使用して親レコードと子レコードの両方を取得する単一の選択クエリを生成します。Hibernateの条件createaliasメソッドが追加のselectクエリを生成する
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());
}
}
マッピングファイル:Googleで
<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>
こんにちは、私はいくつかの1つは私にこの質問への答えを知らせることができます – Pani