我完成了JDeveloper的提示卡「構建融合Web應用程序」,這是非常基本的,並告訴您必須更新父(ORDER)表,並查看孩子(ORDER_ITEM)與父記錄相關聯排。這一切都很好,但當然在「真實世界」中,您需要更新/添加項目到訂單。當然,在添加/更新ORDER_ITEMS表之後,您需要ORDER表中的ORDER_TOTAL值來反映更改。換句話說,如果您將其中一個項目的數量加倍,ORDER表中的ORDER_TOTAL值應該增加。在ADF中更新子實體對象時,如何更新父實體對象?
因此,爲了擴大提示卡,我添加了另一個頁面,它允許我更新ORDER_ITEMS表中的值,它可以正常工作 - 這只是開箱即用的ADF魔術。
我嘗試後我的任務流的形象,但我的名譽的水平還不夠高。我想我有玩遊戲不再以賺取更多的公會點:)下面是一個圖片click here我最初發布這個問題向Oracle用戶組,但沒有得到迴應,所以我想我會嘗試這個論壇的鏈接。
我嘗試了兩種方法在ORDER_ITEM表添加/更新後更新ORDER表中的ORDER_TOTAL。
1)修改訂單查看以包括其計算ORDER_TOTAL動態
SELECT Orders.ORDER_ID,
Orders.ORDER_DATE,
Orders.ORDER_SHIPPED_DATE,
Orders.ORDER_STATUS_CODE,
(select sum(unit_price * quantity) from order_items a
where a.order_id = Orders.order_id
group by order_id)
AS ORDER_TOTAL,
Orders.CUSTOMER_ID,
Orders.SHIP_TO_NAME,
Orders.SHIP_TO_ADDRESS_ID,
Orders.SHIP_TO_PHONE_NUMBER,
嵌套選擇語句。 。 。 。
2)與加/更新後的任務流添加的更新在ORDER表ORDER_TOTAL值ORDER_ITEM表和COMMIT。
更新訂單設置ORDER_TOTAL = ???? where order_id = ????
無論使用哪種解決方案,我得到的是相同的結果如下
我在editOrderItem.jsff頁面更新ORDER_ITEM表,任務流程執行COMMIT和返回editOrder.jsff頁面,ORDER_TOTAL量並不反映這種變化。從editOrder.jsff中取消取消返回到顯示正確的ORDER_TOTAL金額的order.jsff。從order.jsff返回editOrder.jsff,出現ORDER_TOTAL的正確值。 似乎order.jsff中的ADF表單中的值被緩存,頁面永不刷新數據庫的任何更新。我試圖通過將屬性從刷新「true」更改爲「false」來進行editOrder.jsff刷新。還將CacheResults從「true」更改爲「false」。嘗試將任務流屬性從「無控制器操作」修改爲「始終開始新事務」。
對,這是什麼ADF框架應該做的事。 – 2014-10-07 14:46:19