我正在创建一个电子处方模块,允许创建几个订单并在确认之前添加到列表中(一起保存在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()等的值。 请帮忙!