【发布时间】:2026-02-26 06:25:01
【问题描述】:
我是 hibernate 和 java-ee 的新手,我想知道是否有人能告诉我为什么这段代码返回 false,即使通过查看数据库我可以看到事务实际上已提交:
session.beginTransaction();
session.saveOrUpdate(user);
session.getTransaction().commit();
return session.getTransaction().wasCommitted(); //Always false
谢谢!
【问题讨论】:
-
来自 API javadoc:
Check if this transaction was successfully committed. This method could return false even after successful invocation of commit(). As an example, JTA based strategies no-op on commit() calls if they did not start the transaction; in that case, they also report wasCommitted() as false.不知道这是否解释了什么。 -
因为提交不一定发生在你请求它之后(也许 commit() 在另一个线程中启动)等等......无论如何要求你刚刚做的事情是没有意义的(这个就像在执行 a = 2 + 1) 之后询问 a == 3)。
-
这很奇怪,为什么有一个不起作用的方法?
标签: java mysql hibernate jakarta-ee glassfish