2012-06-19 2 views
1

테이블에서 올바른 데이터를 가져 오는 데 문제가 있습니다. CompanyActualData 클래스에는 CompanyActualDataPK 클래스의 멤버가 포함되어 있습니다. 클래스 CompanyActualDataPK에는 Entity 클래스의 멤버와 문자열 isin이 포함되어 있습니다. Entity의 문자열은 visibility이며 필터링하고 싶습니다. 나는 과 특별 isin을 가지고 모두 CompanyActualData을 받고 싶습니다.최대 절전 모드 키 - 다 대일

지금 나는 올바른 기준을 만드는 데 어려움을 겪고 있습니다. de.ll.web.pm.services.company.actual.CompanyActualData

:의 companyActualDataPK.entity.visible :

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

난 항상 오류

속성을 확인할 수 없습니다를 얻을 수

아마도 아무도 힌트가 있습니다. createCriteria("companyActualDataPK") 이렇게함으로써

<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

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