使用DWR,hibernate的annotation的lazy属性失效,为何?

我先说用了几个框架吧,spring,hibernate,dwr,然后bean用的是annotation标记的:
其中商品和订单表,我用的是一对多
Product bean
  1. @OneToMany(targetEntity = Order.class, cascade = CascadeType.REMOVE, fetch = FetchType.LAZY)   
  2.     @JoinColumn(name = "PRODUCTID")   
  3.     public List<Order> getOrders() {   
  4.         return orders;   
  5.     }  


在DAO层里,我用了spring的hibernateDaoSupport,其中有个分页查询方法:

java 代码
  1. /**  
  2.  * 根据页码和每页的长度返回对象集合  
  3.  *   
  4.  * @param pageNo  
  5.  *            页码  
  6.  * @param pageSize  
  7.  *            每页的长度  
  8.  * @return  
  9.  */    
  10. public Page<T> PageQuery(int pageNo,int pageSize){   
  11.     Criteria criteria = this.createCriteria();   
  12.     return this.pagedQuery(criteria, pageNo, pageSize);   
  13. }  

方法返回的page,我自己定义的一个封装了页面属性和内容的bean。

然后定义了一个service层的方法,调用DAO层的这个分页函数。

java 代码

 

  1. public List<Product> getProducts(int pageNo,int pageSize){         
  2.         return productDAO.PageQuery(pageNo, pageSize).getResult();   
  3.     }  

 JSP页面使用DWR调用service层的getProducts

xml 代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr//dwr20.dtd">  
  3. <dwr>  
  4.     <allow>  
  5.         <create javascript="ProductService" creator="spring">  
  6.             <param name="beanName" value="productService"></param>  
  7.             <include method="loadProduct" />  
  8.             <include method="getProducts" />  
  9.         </create>  
  10.     </allow>  
  11. </dwr>  

再定义了JS函数

js 代码
  1. window.onload = function(){   
  2.     ProductService.getProducts(1,10,displayProducts);   
  3. }   
  4. function displayProducts(products){   
  5.     DWRUtil.removeAllRows("items");   
  6.     if (items.length == 0) {   
  7.         alert("No matching products found");   
  8.         $("products").style.visibility = "hidden";   
  9.     } else {   
  10.         DWRUtil.addRows("items",products,cellFunctions);   
  11.         $("products").style.visibility = "visible";   
  12.     }   
  13.        
  14. }   
  15. /*  
  16.  * Array of functions to populate a row of the items table  
  17.  * using DWRUtil's addRows function  
  18.  */  
  19. var cellFunctions =[   
  20.     function(product){return product.productname},   
  21.     function(product){return product.productdetail},   
  22.     function(product){return product.price},   
  23.     function(product) {    
  24.     var btn = document.createElement("button");   
  25.     btn.innerHTML = "Add to cart";   
  26.     btn.productId = product.id;   
  27.     btn.onclick = addToCartButtonHandler;   
  28.     return btn;   
  29.   }   
  30. ];  
所有的源码基本上就是这些,我使用单元测试时,lazy效果已经有了!但是我访问页面,通过dwr调用service层方法,好像却失效了,通查询查看hibernate日志,看到与之相关的所有select语句,全部打印了出来!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值