我需要检查一下,如果hibernate的提交成功。特别是,如果某个项已成功从数据库中删除,则将其从JSF页面上的表中删除。
session.getTransaction().commit();
我该如何处理?
答案 0 :(得分:1)
commit()具有void返回类型,因此不会很遗憾地告诉你。
但是,看起来Transaction有一个wasCommited方法。 http://docs.jboss.org/hibernate/orm/3.5/api/org/hibernate/Transaction.html
那应该做你想要的。如果没有,那么您可以随时再次查询该项目。这是不太理想,因为你再次击中数据库,但它会工作。
答案 1 :(得分:0)
在Hibernate 5之前,Transaction接口上有一个wasCommitted()方法。但是在版本5及更高版本中,此方法已被删除,您需要使用TransactionStatus来确定事务的状态。
https://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/Transaction.html http://docs.jboss.org/hibernate/orm/5.0/javadocs/org/hibernate/resource/transaction/spi/TransactionStatus.html
在您的情况下,您可以检查交易的状态,如下所示:
if(session.getTransaction().getStatus() == TransactionStatus.COMMITTED){
// do something
}
可用的不同状态是ACTIVE,COMMITTED,COMMITTING,FAILED_COMMIT,MARKED_ROLLBACK,NOT_ACTIVE,ROLLED_BACK& ROLLING_BACK。