2012-06-19 158 views
1

我有一個問題從表中獲取正確的數據。類CompanyActualData包含類CompanyActualDataPK的成員。類CompanyActualDataPK包含類Entity和字符串isin的成員。 Entity有一個字符串visibility,我想過濾。 我想獲得所有CompanyActualData,有一個特殊的visibility和一個特殊的isin休眠鍵 - 多對一

目前我努力創造正確的標準。

List<CompanyActualData> l = 
    session.createCriteria(CompanyActualData.class) 
    .add(Restrictions.eq("companyActualDataPK.isin", isin)) 
    .createCriteria("companyActualDataPK") 
    .add(Restrictions.eq("companyActualDataPK.entity.visible", visibility)) 
    .list(); 

我總是得到錯誤

無法解析屬性: de.ll.web.pm.services.company.actual.CompanyActualData

:中companyActualDataPK.entity.visible

也許任何人都有提示。

<class name="de.ll.web.pm.services.company.actual.CompanyActualData" schema = "reporting" table="company_actual"> 

     <composite-id name="companyActualDataPK" class="de.ll.web.pm.services.company.actual.CompanyActualDataPK">   
      <key-property name="isin" column="isin"/> 
      <key-property name="countryId" column="country_id"/> 
      <key-many-to-one name="entity"  class="de.ll.web.pm.services.entity.Entity" lazy="false" > 
       <column name="entity_id"></column> 
      </key-many-to-one> 
     </composite-id> 

     <property name="sedol" column="sedol" not-null="false" /> 
     <property name="valueDouble" column="value_double" not-null="false" /> 
     <property name="valueString" column="value_string" not-null="false" /> 
     <property name="date" column="date_id" not-null="false" /> 

     <many-to-one name="currency" 
      class="de.ll.web.pm.services.currency.Currency" lazy="false" insert="false" update="false"> 
      <column name="currency_id"></column> 
     </many-to-one> 
    </class> 

>

<class name="de.ll.web.pm.services.entity.Entity" 
     table="md_entity" schema="reporting"> 

     <id name="entityId" column="entity_id" type="java.lang.String"> 
      <generator class="native" /> 
     </id> 

     <property name="name" column="name" /> 
     <property name="description" column="description" /> 
     <property name="vendor" column="vendor" /> 
     <property name="visible" column="is_visible" type="java.lang.String" /> 
     <property name="currency" column="is_currency" type="java.lang.String" /> 
</class> 

回答

1

通過這樣做createCriteria("companyActualDataPK"),該Criteria是越來越植根在PK類。以下Restriction中提供的所有房產名稱將相對於CompanyActualDataPK類。

嘗試做:

List<CompanyActualData> l = 
    session.createCriteria(CompanyActualData.class) 
    .add(Restrictions.eq("companyActualDataPK.isin", isin)) 
    .add(Restrictions.eq("companyActualDataPK.entity.visible", visibility)) 
    .list(); 
+0

感謝哈維,但我正在逐漸org.hibernate.QueryException:無法解析屬性:的companyActualDataPK.entity.visible:de.ll.web.pm.services.company。 actual.CompanyActualData我可以訪問該實體,但問題似乎是可見的屬性。 – xyx

+0

您可以在問題中發佈「de.ll.web.pm.services.entity.Entity」的相關映射/實體嗎? –

+0

我已經添加了實體的映射。一切工作正常,當刪除可見的限制。該對象填充正確。 – xyx