0
我是新来的休眠和一般的Java EE和我想知道是否有人能告诉我,为什么这段代码返回false,即使从看数据库中,我可以看到交易实际承诺:为什么transaction.wasCommitted()返回false?
session.beginTransaction();
session.saveOrUpdate(user);
session.getTransaction().commit();
return session.getTransaction().wasCommitted(); //Always false
谢谢!
从API javadoc:检查此事务是否成功提交。 即使成功调用commit()后,此方法也可能返回false。举例来说,基于JTA的策略如果没有启动事务,就不会执行commit()调用;在那种情况下,他们也会报告wasCommitted()为false。“不知道这是否解释了什么。 – 2013-03-19 15:45:25
因为提交并不一定只发生在你要求之后(也许commit()是在另一个线程中启动的),等等......总之,没有任何意义要求你刚才做的事情(这就像是问一个== 3在a = 2 + 1之后)。 – m0skit0 2013-03-19 15:47:46
那么这很奇怪,为什么有一种方法不能真正起作用? – 2013-03-19 15:50:19