注册 登录
编程论坛 J2EE论坛

关于hibernate get问题

亮剑 发布于 2007-04-05 22:23, 706 次点击
public ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest req, HttpServletResponse resp) throws Exception {

LoginActionForm loginfrom = (LoginActionForm)form;
User user = loginfrom.getUser();
//数据库的访问:根据user load出一个user_temp
User user_temp= userbus.loginUser(user);

if(user_temp!=null){
HttpSession session = req.getSession();
Set orders = user_temp.getOrders();//获得它的orders集合
//但是为什么只有当我执行orders.size()的时候它才会去load的出对应的orders如果不加这句他就不会load出orders
orders.size();
session.setAttribute("orders",orders);
session.setAttribute("user", user_temp);
return mapping.findForward("index");
}
return mapping.findForward("register");
}
我的 User 与 orders 是一对多的关系
6 回复
#2
时空之蕊2007-04-05 22:42
应该是lazy为true了
如果lazy为true那么orders是一个代理类,而不是真正的orders
只有在第一次访问的时候才会去加载数据
#3
亮剑2007-04-05 22:55
如何来设置呢
#4
支离破碎2007-04-06 09:06
如果是延时加载的问题就可以在配置文件设置,可以在hbm.xml文件中设置。
#5
黄袖标2007-04-06 18:52
楼主只要了解hib的加载策略问题就很清楚了,如果楼主对这个不是很熟的,就都用立即加载吧。这样可能会降低一些效率,有点辜负了写hib的人的期望。
#6
亮剑2007-04-06 20:06
我在load的时候用的就是get方法 它不就是立即加载的吗 但是好像没用阿
#7
黄袖标2007-04-07 16:39
还是加载的问题,楼主把在不同加载方式下,hib是如何抓取数据的原则看下就知道了。还是那句老话,实在搞不明白就用立即加载。
1