Java Hibernate保存对象并在同一事务中使用同一会话更新其他对象仅更新而不保存

我要做的是,当客户订购产品时,该订单将被保存到数据库中,并且该产品将被更新。

Session session = factory.openSession();
Transaction t = session.beginTransaction();

        try {
            session.update(product);
            session.save(order);
            t.commit();
        }
        catch (Exception e) {
            t.rollback();
        }
        finally {
            session.close();
        }

产品和订单是2种不同的对象类型。运行此代码时我也不例外,但是只有产品得到更新,订单没有保存。

对不起,我的英语不好。

vrfriends 回答:Java Hibernate保存对象并在同一事务中使用同一会话更新其他对象仅更新而不保存

您可能没有调用 t.begin 方法而忘记了开始交易。另外,您的try-catch语句存在一些问题,因为factory.openSession和session.beginTransaction应该位于try块内,因为两者都可能引发异常。尝试以下示例代码:

Session session = null;
Transaction t = null;

try {
  session = factory.openSession();
  t = session.beginTransaction();
  t.begin()

  session.update(product);
  session.save(order);

  t.commit();
}
catch (Exception e) {
  if (t != null) {
    t.rollback();
  }
}
finally {
  if (session != null) {
    session.close();
  }
}
,

通常,我使用persist将新条目保存到数据库中。

顺便说一句,我鼓励您使用try-with-resource来避免在最后添加finally块

本文链接:https://www.f2er.com/3104458.html

大家都在问