Spring @Transactional 在少数情况下不起作用

Spring @Transactional not working in few cases

我的以下服务 class 带有 @Transactional 注释。

@Service
@Transactional
public class MyService {

    @Autowired
    private SessionFactory sessionFactory;


    public Order acceptOrder(Order inputOrder) {
        Session session = sessionFactory.openSession();
        session.save(inputOrder);
        session.close();
        return inputOrder ;
    }

    public Order updateOrder(Order inputOrder) {

        Session session = sessionFactory.openSession();
        //session.beginTransaction();
        if(inputOrder.getOrderStatus().equals("confirmed")) {
            EmpAccount empAcc = (EmpAccount)session.get(EmpAccount.class, inputOrder.getEmpId());
            double newEmpBal = empAcc.getAvailable_balance() - inputOrder.getOrderAmount();
            empAcc.setAvailable_balance(newEmpBal);
            System.out.println("new bal"+newEmpBal);

            VendorAccount venAcc = (VendorAccount)session.get(VendorAccount.class,inputOrder.getvId());
            double newVenBal = venAcc.getBalance() + inputOrder.getOrderAmount();
            venAcc.setBalance(newVenBal);
            session.update(inputOrder);
        //  session.getTransaction().commit();
            session.close();
        }

        return inputOrder;
    } }

对于 acceptOrder()@Transactional 正在工作,我在数据库中创建了一个新行,但是当调用 updateOrder() 时,数据库中没有任何变化被反映出来。

谁能告诉我这是为什么? TIA

正如 M. Deinum 评论的那样,对于 Spring 托管事务,无需打开和关闭 SessionSessionsessionFactory.getCurrentSession()[=13 提供=]