我在adf 12c中创建了一个融合Web应用程序并使用12c数据库。构建我的应用程序后,我不小心删除了表中的一些行,但没有按下提交按钮。删除的行不会显示在那里但存在于数据库中(刷新后检查)。我想在页面刷新/重新加载或通过一些命令按钮刷新数据库中的数据。如何在不重建我的应用程序的情况下做到这一点。
以下是如何在ADF表上实现回滚?
它看起来像这样:
<af:commandButton actionListener="#{bindings.Rollback.execute}" text="Rollback" disabled="#{!bindings.Rollback.enabled}" immediate="true" id="cb6">
你也可以用Java做到这一点:
appModule.getTransaction.rollback();
此回滚操作将取消对应用程序模块所做的所有修改,并再次查询数据库以查找其所有View对象。
在这里阅读更多:https://docs.oracle.com/cd/B14099_19/web.1012/b14022/oracle/jbo/ApplicationModule.html
交易
与根应用程序模块关联的是Transaction对象,它提供此事务上下文。从任何(根或嵌套)应用程序模块,用户可以通过调用getTransaction()来检索事务对象。实际上,getTransaction()首先找到根应用程序模块,然后从中返回事务对象。
Transaction对象管理与数据库和实体缓存的连接。因此,只要这些视图对象全部由一个根应用程序模块作为父对象,通过一个视图对象所做的更改对其他视图对象是可见的。相反,如果两个视图对象由两个单独的根应用程序模块作为父级,则第二个视图对象将无法看到通过视图对象所做的更改,直到通过第一个根应用程序模块将更改提交到数据库并且第二个VO执行查询(从数据库中检索最新数据)。
您需要为View对象选择executeQuery操作,该操作填充表并将其作为按钮放在页面上。按下按钮将重新查询您的数据库以从那里获取数据。