多表级联查询
下面是源码:
public List webQBCfindbyorderone(String Addr) {
// 获得Criteria对象
Criteria criteria = getCurrentSession().createCriteria(Orders.class,"A");
criteria.createAlias("detailses", "A1",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("staff","A2",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("orderstatus", "A3",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("paystatus", "A4",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("transportation", "A5",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("merchant", "A6",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("client", "A7",JoinType.LEFT_OUTER_JOIN);
criteria.createAlias("A7.clientaddrs", "A8",JoinType.LEFT_OUTER_JOIN);
//添加约束条件
if(Addr!=null&&!"".equals(Addr)){
criteria.add(Restrictions.like("A8.clientaddrAddr", Addr, MatchMode.ANYWHERE));
}
criteria.addOrder(Order.desc("orderOrdertime"));
// 设置投影
criteria.setProjection(Projections.projectionList()
.add(Projections.property("orderId"),"orderId")
.add(Projections.property("orderNo"),"orderNo")
.add(Projections.property("orderName"),"orderName")
.add(Projections.property("orderOrdertime"),"orderOrdertime")
.add(Projections.property("orderRemark"),"orderRemark")
.add(Projections.property("orderOrderprice"),"orderOrderprice")
.add(Projections.property("orderNumber"), "orderNumber")
.add(Projections.property("orderCarriage"),"orderCarriage")
.add(Projections.property("orderMileage"),"orderMileage")
.add(Projections.property("A1.detailsGoodsname"),"detailsGoodsname")
.add(Projections.property("A2.staffName"),"staffName")
.add(Projections.property("A2.staffTel"),"staffTel")
.add(Projections.property("A3.orderstatusOrderstatus"),"orderstatusOrderstatus")
.add(Projections.property("A4.paystatusPaystatus"),"paystatusPaystatus")
.add(Projections.property("A5.transportationstatus"),"transportationstatus")
.add(Projections.property("A5.transportationtime"),"transportationtime")
.add(Projections.property("A6.merchantName"),"merchantName")
.add(Projections.property("A8.clientaddrAddr"),"clientaddrAddr")
.add(Projections.property("A8.clientaddrAddr1"),"clientaddrAddr1"));
// 将多属性投影查询映射成一个Map对象
criteria.setResultTransformer(criteria.ALIAS_TO_ENTITY_MAP);
// 多属性投影查询时返回的集合的泛型是一个Map
List<Map<String,Object>> orderlist=criteria.list();
return orderlist;
}