Hibernate Criteria用法 关于Criteria多表连接 本人经验有限

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));

   


         }



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值