懒惰的Hibernate初始化没有会话,无法初始化代理

时间:2016-08-05 19:59:15

标签: spring hibernate

我正在创建一个电子处方模块,允许创建几个订单并在确认之前添加到列表中(一起保存在DB中)。我有两个表单 - 一个用于创建订单,另一个用于添加更多订单的链接,其中提交按钮将存储DB中的所有订单(ArrayList项)。即创建时的每个订单都被添加到下面的ArrayList [createNewDrugOrder()方法]

当我尝试在此方法中保存每个订单时 - 它工作正常。但我的要求是让设施在确认订单之前将订单存储为草稿(存储在DB中)。

    public class DrugordersPageController{

     SessionFactory sessionfactory;

     public void controller(){
      if ("addDraftOrder".equals(action)){
       createNewDrugOrder();
      }
      if ("confirmOrder".equals(action)){
       saveOrder();
      }
     }

     createNewDrugOrder(){
      DrugOrder order = new DrugOrder();
      order.setDose(1);
      order.setDuration(1);
      order.setQuantity(1);
      ConfirmOrderClass.orderToConfirm.add(order);
     }

     saveOrder(){
      DrugOrder order = ConfirmOrderClass.getDrugOrderMain();
      order = (DrugOrder) Context.getOrderService().saveOrder(order, null); //Here is where error is thrown
     }
    }


    class ConfirmOrderClass{

     public static ArrayList<DrugOrder> orderToConfirm = new ArrayList<DrugOrder>();

     public static ArrayList<DrugOrder> getDrugOrderMain(){
      return orderToConfirm;
     }
    }  

我理解这是一个对象与会话分离的情况,但我无法修复它。在第二种形式中调用session.save或session.update没有帮助.. Hibernate.initialize(object)或添加@Transactional表示法

当我调用Session s = sessionfactory.getCurrentSession或openSession时,我仍然会得到空指针错误。虽然我能够检索order.getDose(),order.getDuration()等的值。 请帮忙!

0 个答案:

没有答案