2015-06-08 68 views
1

我無法訪問嵌入類中的值。休眠查詢例外:無法在擁有實體上創建批評

Criteria cr = this.getHibernateTemplate().getSessionFactory().openSession().createCriteria(DuaVO.class,"Dua"); 

if (duaSearchVO.getContractNum()!=null && !duaSearchVO.getContractNum().isEmpty()) { 
    cr.createCriteria("Dua.contractFundingDetails", "contractFundingDetails"); 
    cr.add(Restrictions.eq("contractFundingDetails.contractNumber", duaSearchVO.getContractNum())); 
    flag = true; 
} 

JUnit測試

@Test 
public void testsearchDua() { 
    DuaSearchVO duaSearchVO = new DuaSearchVO(); 

    //ContractFundingDetailsVO - contractNumber 
    duaSearchVO.setContractNum("HHS12132423"); 


    List<Object[]> result = duaSearchDaoImpl.searchDua(duaSearchVO); 


    Assert.assertNotNull(result); 
} 

我得到這個例外。

org.hibernate.QueryException: Criteria objects cannot be created directly on components. Create a criteria on owning entity and use a dotted property to access component property: contractFundingDetails 
at org.hibernate.loader.criteria.CriteriaQueryTranslator.getPathInfo(CriteriaQueryTranslator.java:274) 
at org.hibernate.loader.criteria.CriteriaQueryTranslator.createCriteriaEntityNameMap(CriteriaQueryTranslator.java:230) 
at org.hibernate.loader.criteria.CriteriaQueryTranslator.<init>(CriteriaQueryTranslator.java:112) 
at org.hibernate.loader.criteria.CriteriaLoader.<init>(CriteriaLoader.java:86) 
at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1568) 

主類(DuaVO)

@Embedded 
private ContractFundingDetailsVO contractFundingDetails; 

嵌入類

@Embeddable 
    public class ContractFundingDetailsVO implements Serializable 
    { 
     @Column(name="CNTRCT_NUM") 
     private String contractNumber; 
     } 
+0

什麼是Dua? 'cr.createCriteria(「contractFundingDetails」,「contractFundingDetails」)是否有效? –

+0

我認爲問題在於eq限制。雖然可以在映射中,也許是懶惰? – nMoncho

+0

@PredragMaric:我更新了代碼,不,它給了我同樣的例外。 – AppSensei

回答

0

解決。

因爲沒有連接,所以我不必創建createCriteria()方法。

cr.add(Restrictions.eq 
("Dua.contractFundingDetails.contractNumber", duaSearchVO.getContractNum())); 

       flag = true; 
      } 
+0

我現在面臨類似的問題,我的嵌入式字段。你知道解決方案嗎?http://stackoverflow.com/questions/40733812/org-hibernate-queryexception-criteria-objects-cannot-be-created-directly-on-com/40735564?noredirect = 1#comment68700384_40735564 – Ratha