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;
}
什麼是Dua? 'cr.createCriteria(「contractFundingDetails」,「contractFundingDetails」)是否有效? –
我認爲問題在於eq限制。雖然可以在映射中,也許是懶惰? – nMoncho
@PredragMaric:我更新了代碼,不,它給了我同樣的例外。 – AppSensei