我有一個相當複雜的標準,我用它來檢索,排序和頁面服務器端數據。我剝了下來以下摘錄:Hibernate Criteria API - 訪問加入的屬性
// create criteria over a bunch of tables...
Criteria testCriteria = getSession().createCriteria(PriceRequest.class)
.setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
.setFetchMode("pricedBy", FetchMode.JOIN)
.setFetchMode("canceledBy", FetchMode.JOIN)
.setFetchMode("product", FetchMode.JOIN)
.setFetchMode("product.underlyings", FetchMode.JOIN)
.setFetchMode("product.tradedBy", FetchMode.JOIN)
.setFetchMode("product.requestedBy", FetchMode.JOIN)
.setFetchMode("fileUploads", FetchMode.JOIN);
// add various filter fields (only if required in real code)...
Criteria subCriteria = testCriteria
.createCriteria("product", JoinFragment.LEFT_OUTER_JOIN)
.setFetchMode("underlyings", FetchMode.JOIN)
.add(Restrictions.ge("maturityDate", new Date()));
testCriteria.addOrder(Order.desc("product.id")); // (1)
testCriteria.addOrder(Order.desc("product.maturityDate")); // (2)
List list = testCriteria.list();
聲明(1)運行正常,說明(2)但下列情況除外結束:
重度:Servlet.service()用於servlet的休息拋出異常 org.hibernate.QueryException:無法解析屬性: product.maturityDate的:com.my.model.PriceRequest
我拿起「maturityDate」作爲一個例子,但我有所有的產品這個問題屬性除「product.id」外。
我也嘗試添加產品的別名(「prod」)。這允許按到期日期(「prod.maturityDate」)進行排序,但無法將限制添加到子標準。
我這麼多不知道出現了什麼問題?
屬性** maturityDate **是否存在於**產品**內? – ManuPK 2012-03-26 13:23:23
絕對。在文本中查看我的更新。 – 2012-03-26 13:34:57