Criteria criteria = this.getSession().createCriteria(OrderProduct.class,"P");
Criteria可以多表连接,在你用List集合接收你用criteria.createAlias("P.order", "O")创建时,
在List集合里就有二个对象,可以创建多个,集合里就有多个对象,在jsp页面获取时,
就要加上下标,如果集合中只在一个对象,就不用加下标
jsp页面主要代码
<c:forEach items="${pager.list }" var="P">
<tr style="height: 30px">
<td>${P[2].order.orderId }</td>
<td>${P[2].order.profileDetail.companyname}</td>
<td>${P[2].serialNumber}</td>
<td>
${P[2].singleNumber}
</td>
<td>${P[2].price}</td>
<td>${P[2].num }</td>
<td>
<fmt:formatNumber value="${P[2].price*P[2].num }" pattern="##.##" minFractionDigits="2" />
</td>
</tr>
</c:forEach>
后台数据访问层主要代码
Criteria criteria = this.getSession().createCriteria(OrderProduct.class,"P");
criteria.createAlias("P.order", "O").add(Restrictions.eq("P.isSample", 0)).add(Restrictions.eq("P.state",0)).add(Restrictions.eq("O.state",6));
String startTime = searchPrerequisite.getStartTime();
String endTime = searchPrerequisite.getEndTime();
//业务编号
int userId = profileService.businessIdByName(searchPrerequisite.getSalesmanName());
//客户编号
int customerId=profileDetailSerivce.customerIdByName(searchPrerequisite.getCustomerName());
//产品编号
String productId=searchPrerequisite.getProductNumber();
if(productId!=null&&!productId.equals("")){
criteria.add(Restrictions.eq("P.serialNumber", productId));
}
if(startTime!=null&&!startTime.equals("")){
criteria.add(Restrictions.ge("O.createTime", startTime));
}
if(endTime!=null&&!endTime.equals("")){
criteria.add(Restrictions.le("O.createTime", endTime));
}
if(searchPrerequisite.getSalesmanName()!=null&&userId>-1&&!searchPrerequisite.getSalesmanName().equals("")){
criteria.add(Restrictions.eq("O.userId", userId));
}
//如果还要恢复默认的结果集状态,需调用
//criteria.setResultTransformer(Criteria.ROOT_ENTITY);
criteria.createAlias("O.profileDetail", "D");
if(searchPrerequisite.getCustomerName()!=null&&customerId>-1&&!searchPrerequisite.getCustomerName().equals("")){
criteria.add(Restrictions.eq("D.memberId", customerId));
}