Oracle ADF:事务处理后刷新相关行

Oracle ADF:事务处理后刷新相关行,oracle,oracle-adf,Oracle,Oracle Adf,我有一个Oracle ADF实体,其中在数据库中强制执行的行之间存在关系 我给你一个简单的例子: 假设MyEntityImpl的属性是Customer、Month、Quantity和Quantity Rank。假设主键是Customer,Month。假设数量等级的定义是,它必须是给定月份内客户数量的密集等级。因此,当月数量最多的客户得到1个,然后次高的客户得到2个,以此类推。假设客户名称打破了联系——这无关紧要 此页面的DML设置为,当我更新任何行时,立即重新计算给定月份所有客户的数量等级值,并

我有一个Oracle ADF实体,其中在数据库中强制执行的行之间存在关系

我给你一个简单的例子:

假设MyEntityImpl的属性是Customer、Month、Quantity和Quantity Rank。假设主键是Customer,Month。假设数量等级的定义是,它必须是给定月份内客户数量的密集等级。因此,当月数量最多的客户得到1个,然后次高的客户得到2个,以此类推。假设客户名称打破了联系——这无关紧要

此页面的DML设置为,当我更新任何行时,立即重新计算给定月份所有客户的数量等级值,并在数据库中更新

因此,这里的关键问题是:什么是最自然、最简单、最ADFish的方法,可以使我的ADF页面在当月任何值发生变化时有效地重新查询并显示整个月份的更新行

例如,用户更新2017-02月的客户100,数量为100。这将导致2017-02月的部分甚至所有其他客户记录获得更新的数量等级值。确保我的ADF页面刷新其他记录以及实际更新的记录的最佳方法是什么

使现代化
在实际问题中,数量等级计算非常复杂,需要大量其他数据库数据,这就是为什么它在数据库中进行的原因。因此,涉及Groovy表达式和其他内容的解决方案可能不会有帮助。我尝试将此计算所需的数据包含在实体模型中,以便让ADF页面执行计算,但额外的数据明显减慢了页面的速度。性能在本页上比平时更为重要。

如果我理解您的问题,您希望在数据源更改时更新ADF BC模型。您可以从查看活动数据源文档开始。还有这个


如果您的意思是ADF Faces页面通过ADF模型和ADF BC层对数据库进行更改,则可以从ADF Faces页面重新执行查询,使用EL调用数据控件上的执行操作,或刷新迭代器。

谢谢您的回答。我很感谢你花时间投票。我必须检查你发送的链接,看看它们是否解决了我的问题。我一直在寻找一个答案,即遍历vieimpl.afterCommit事务中的行集,并为每个行调用row.refresh,这是我当前正在尝试的,但是我还不知道它是否会工作。看起来像是很多手工工作-为什么不从DC重新执行查询?因为通过筛选条件显示在页面上的行数将达到数千行。每次更新需要刷新的行数约为10。我正努力使表演保持一致。