2014-10-06 175 views
0

我完成了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」。嘗試將任務流屬性從「無控制器操作」修改爲「始終開始新事務」。

回答

0

您需要在提交ORDER_ITEM修改後重新執行包含ORDER_TOTAL的查詢。

+0

對,這是什麼ADF框架應該做的事。 – 2014-10-07 14:46:19