关于hibernate get问题
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 是一对多的关系
搜索更多相关主题的帖子:
get hibernate 数据库 user temp
----------------解决方案--------------------------------------------------------
应该是lazy为true了
如果lazy为true那么orders是一个代理类,而不是真正的orders
只有在第一次访问的时候才会去加载数据
----------------解决方案--------------------------------------------------------
如何来设置呢
----------------解决方案--------------------------------------------------------
如果是延时加载的问题就可以在配置文件设置,可以在hbm.xml文件中设置。
----------------解决方案--------------------------------------------------------
楼主只要了解hib的加载策略问题就很清楚了,如果楼主对这个不是很熟的,就都用立即加载吧。这样可能会降低一些效率,有点辜负了写hib的人的期望。
----------------解决方案--------------------------------------------------------
我在load的时候用的就是get方法 它不就是立即加载的吗 但是好像没用阿
----------------解决方案--------------------------------------------------------
还是加载的问题,楼主把在不同加载方式下,hib是如何抓取数据的原则看下就知道了。还是那句老话,实在搞不明白就用立即加载。
----------------解决方案--------------------------------------------------------