我有一个Oracle ADF实体,其中在数据库中强制执行的行之间存在关系。
我会给你一个简化的案例:
假设MyEntityImpl的属性是Customer,Month和Quantity,以及Quantity Rank。假设主键是(Customer,Month)。假设"数量排名"的定义是它必须是给定月份内客户数量的密集等级。因此,当月数量最多的客户获得1,然后下一个最高获得2,等等(假设关系被客户名称打破 - 这没关系)。
此页面的DML设置为当我更新任何行时,"数量排名"将立即重新计算并更新给定月份中所有客户的值。
所以,这里的关键问题是:什么是最自然,最简单,最" ADFish"什么方式使我的ADF页面有效重新查询并显示整个月的更新行,只要当月的任何值发生变化?
例如,用户更新客户#100,月份数量为100.这将导致月份中的一些(甚至全部)其他客户记录更新"数量秩"值。确保我的ADF页面刷新其他记录以及实际更新的记录的最佳方法是什么?
在实际问题中,"数量排名"计算非常复杂,需要大量其他数据库数据,这就是它在数据库中完成的原因。因此,涉及Groovy表达式和什么不是的解决方案可能不会有所帮助。我尝试在实体模型中包含此计算所需的数据,以便我可以让ADF页面执行计算,但额外的数据会明显减慢页面速度。性能在这个页面上非常重要(比平常更多)。