我有一个相当复杂的标准,我用它来检索,排序和页面服务器端数据。我剥了下来以下摘录: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