2010-12-17 12 views
1

私は休止状態をツリー全体にロードしようとしていますが、成功しません。Hibernateツリー全体がロードされていません。

私は、カテゴリーは、多くの属性と属性は多くのオプション

Category 
    --->Attribute1 
     --->AttributeOption1 
     --->AttributeOption3 
    --->Attribute2 
     --->AttributeOption1 
     --->AttributeOption1 

を持つことができ、この ようなスキーマを持つことができているが、私は休止状態を使用していたとき、それはツリー全体をロードしていません。 私のマッピングファイル以下のとおりです。

Attribute Mapping FIle: 
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Dec 16, 2010 5:25:09 AM by Hibernate Tools 3.4.0.Beta1 --> 
<hibernate-mapping> 
    <class name="com.BiddingSystem.Models.Attribute" table="ATTRIBUTE"> 
     <id name="AttributeId" type="long"> 
      <column name="ATTRIBUTEID" /> 
      <generator class="native" /> 
     </id> 
     <property name="AttributeName" type="java.lang.String"> 
      <column name="ATTRIBUTENAME" /> 
     </property> 
     <set name="Options" table="ATTRIBUTEOPTION" inverse="false" cascade="all" lazy="true"> 
      <key> 
       <column name="ATTRIBUTEID" /> 
      </key> 
      <one-to-many class="com.BiddingSystem.Models.AttributeOption" /> 
     </set> 
    </class> 
</hibernate-mapping> 

Attribute Option Mapping File: 
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Dec 16, 2010 5:25:09 AM by Hibernate Tools 3.4.0.Beta1 --> 
<hibernate-mapping> 
    <class name="com.BiddingSystem.Models.AttributeOption" table="ATTRIBUTEOPTION"> 
     <id name="AttributeOptionId" type="long"> 
      <column name="ATTRIBUTEOPTIONID" /> 
      <generator class="native" /> 
     </id> 
     <property name="Option" type="java.lang.String"> 
      <column name="OPTION" /> 
     </property> 
     <property name="SQLValue" type="java.lang.String"> 
      <column name="SQLVALUE" /> 
     </property> 
    </class> 
</hibernate-mapping> 

Category Mapping File: 
<?xml version="1.0"?> 
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" 
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> 
<!-- Generated Dec 16, 2010 8:37:02 AM by Hibernate Tools 3.4.0.Beta1 --> 
<hibernate-mapping> 
    <class name="com.BiddingSystem.Models.Category" table="CATEGORY"> 
     <id name="CategoryId" type="long"> 
      <column name="CATEGORYID" /> 
      <generator class="native" /> 
     </id> 
     <property name="CategoryName" type="java.lang.String"> 
      <column name="CATEGORYNAME" /> 
     </property> 

     <many-to-one name="ParentCategory" class="com.BiddingSystem.Models.Category"> 
      <column name="PARENT_CATEGORY_ID" /> 
     </many-to-one> 

     <set name="SubCategory" lazy="true" cascade="all-delete-orphan" inverse="true"> 
      <key> 
       <column name="PARENT_CATEGORY_ID" /> 
      </key> 
      <one-to-many class="com.BiddingSystem.Models.Category" /> 
     </set> 

     <set name="AllAttributes" table="ATTRIBUTE" inverse="false" lazy="true" cascade="all"> 
      <key> 
       <column name="CATEGORYID" /> 
      </key> 
      <one-to-many class="com.BiddingSystem.Models.Attribute" /> 
     </set> 

    </class> 
</hibernate-mapping> 

親カテゴリをロードする機能は以下のとおりです。

public List <Category> getCategory(long CategoryId) 
    { 
     Session session = gileadHibernateUtil.getSessionFactory().openSession(); 
     List <Category> AllCategory= new LinkedList<Category>(); 
     String SQL="from Category where parent_category_id is NULL"; 
     Query query = session.createQuery(SQL); 
     return query.list(); 
    } 
+0

「ツリー全体が読み込まれていません」という正確な意味はありますか? - すべてのカテゴリーではなく、1つのクエリー(ツリーロード)によるツリー全体ではなく、ロードされているサブカテゴリーはアクセスされてもロードされません。 – Ralph

答えて

1

すべての関連付けをlazy = falseにします。デフォルトで怠惰=真

+0

マッピングでは、サブカテゴリはexplicite layz loadedです: 'name = "SubCategory" lazy = "true"' – Ralph

1

は、私は他の間違いがあると信じている:

String SQL="from Category where parent_category_id is NULL"; 
Query query = session.createQuery(SQL); 

org.hibernate.Session.createQuery(String queryString)は、SQLクエリHQLクエリ文字列が必要ですが、ありません! parent_category_idは列名ですが、プロパティ/フィールド名ではないため、from Category where parent_category_id is NULLはSQLクエリのようです。

関連する問題