一对多  customer -->Order
 <set name="set"  inverse="true" cascade="all-delete-orphan"  >
   <key column="customer_id"/>
   <one-to-many class="com.db.tarena.crm.order.entity.Order"/>
</set><many-to-one name="customer" column="customer_id" 
cascade="save-update" class="com.db.tarena.crm.customer.entity.Customer"/>多对多 Order-->ProductOrder
<set name="product" table="crm_order_product"  cascade="save-update" inverse="true" lazy="false"  >
      <key column="order_id" />
  <many-to-many class="com.db.tarena.crm.product.entity.Product" column="product_id"/>
      </set>
Product
<set name="order" table="crm_order_product" cascade="save-update"  >
        <key column="product_id" />
        <many-to-many class="com.db.tarena.crm.order.entity.Order" 
        column="order_id"   ></many-to-many>
       </set>
测试类ApplicationContext ac=new ClassPathXmlApplicationContext("applicationContext.xml");
OrderService os=(OrderService) ac.getBean("orderService");
ProductService ps=(ProductService) ac.getBean("productService");
CustomerService cs=(CustomerService) ac.getBean("customerService");
try {
Order order=new Order();
order.setOrder_Note("O(∩_∩");
Product product=ps.get(1);
Customer cus=cs.getCustomer(23);
order.addProduct(product); //这里报错了题目上的错帮帮忙

} catch (Exception e) {
e.printStackTrace();
}   

解决方案 »

  1.   

    session被关闭了,或者session不存在,所以得不到跟customer相对应的order集合,检查一下你的代码,看 哪里session关闭的...
      

  2.   

    Spring 管理 Session- - ~!
      

  3.   

    晕,不管是spring管理还是你管理..这个错误就是这样的..只能说你写的方法上有问题...没有合理的安排.
      

  4.   

    你试把lazy="false" 改为lazy="true"看看呢?
      

  5.   

    你的lazy设置为true了吧,设置为不延迟加载