用Hibernate配置的映射文件如下:
<class name="Product" table="cart_product">
   <id name="id" column="id" unsaved-value="null">
   <generator class="sequence">
   <param name="sequence">product_seq</param>
   </generator>
   </id>
   <property name="name"/>
   <property name="description"/>
   <property name="price"/>
  </class>
  <class name="Order" table="cart_order">
   <id name="id" column="id" unsaved-value="null">
   <generator class="sequence">
   <param name="sequence">order_seq</param>
   </generator>
   </id>
   <property name="cost"/>
   <set name="items" table="cart_order_item" cascade="save-update">
   <key column="order_id"></key>
   <one-to-many class="Item" />
   </set>
   <many-to-one name="user" column="user_id"></many-to-one>
  </class>
  <class name="Item" table="cart_order_item">
   <id name="id" column="id" unsaved-value="null">
   <generator class="sequence">
   <param name="sequence">order_item_seq</param>
   </generator>
   </id>
   <property name="number" column="amount"/>
   <many-to-one name="product" column="product_id"></many-to-one>
  </class> 
当执行
         public Order findById(int id) throws Exception {

Order o=(Order)HibernateUtil.getSession().load(Order.class, id);
return o;
}
这个方法的时候就会报lazyInitialization错误,请高手指点下怎么改这错!在线等

解决方案 »

  1.   

    把所有错误信息贴出来,还有Order的hbm文件
      

  2.   

    javax.servlet.ServletException: javax.servlet.ServletException: java.lang.ExceptionInInitializerError
    org.apache.struts.chain.ComposableRequestProcessor.process(ComposableRequestProcessor.java:286)
    org.apache.struts.action.ActionServlet.process(ActionServlet.java:1913)
    org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:449)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
      

  3.   

    <class name="Order" table="cart_order">
      <id name="id" column="id" unsaved-value="null">
      <generator class="sequence">
      <param name="sequence">order_seq </param>
      </generator>
      </id>
      <property name="cost"/>
      <set name="items" table="cart_order_item" cascade="save-update">
      <key column="order_id"> </key>
      <one-to-many class="Item" />
      </set>
      <many-to-one name="user" column="user_id"> </many-to-one>
    </class> 
      

  4.   

    你用到了那个属性  o.item 还是 o.item.product  设置一下相应的检索策略
      

  5.   

    Order o=(Order)HibernateUtil.getSession().load(Order.class, id); 
    load方法默认是懒加载,load方法获取到的对象其实不是真正的Order对象,而是
    hibernate生成的一个代理对象,可以把load换成get,或者这样
    public Order findById(int id) throws Exception { 
    Order o=(Order)HibernateUtil.getSession().load(Order.class, id); 
    Hibernate.initialize(o);
    return o;