Oracle ADF:在事务

时间:2017-02-10 15:23:25

标签: oracle oracle-adf

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

我会给你一个简化的案例:

假设MyEntityImpl的属性是Customer,Month和Quantity,以及Quantity Rank。假设主键是(Customer,Month)。假设"数量排名"的定义是它必须是给定月份内客户数量的密集等级。因此,当月数量最多的客户获得1,然后下一个最高获得2,等等(假设关系被客户名称打破 - 这没关系)。

此页面的DML设置为当我更新任何行时,"数量排名"将立即重新计算并更新给定月份中所有客户的值。

所以,这里的关键问题是:什么是最自然,最简单,最" ADFish"什么方式使我的ADF页面有效重新查询并显示整个月的更新行,只要当月的任何值发生变化?

例如,用户更新客户#100,月份数量为100.这将导致月份中的一些(甚至全部)其他客户记录更新"数量秩"值。确保我的ADF页面刷新其他记录以及实际更新的记录的最佳方法是什么?

更新

在实际问题中,"数量排名"计算非常复杂,需要大量其他数据库数据,这就是它在数据库中完成的原因。因此,涉及Groovy表达式和什么不是的解决方案可能不会有所帮助。我尝试在实体模型中包含此计算所需的数据,以便我可以让ADF页面执行计算,但额外的数据会明显减慢页面速度。性能在这个页面上非常重要(比平常更多)。

1 个答案:

答案 0 :(得分:1)

如果我理解您的问题,您希望在数据源发生变化时更新ADF BC模型。您可以从查看活动数据源文档here开始。这blog

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