簡體   English   中英

ActiveJdbc更新聯接表屬性

[英]ActiveJdbc update join-table attribute

晚上好,我正在嘗試更新現有記錄的聯接表屬性。 我有兩個模型,一個叫做Records ,另一個叫做Shoppingcarts 這些通過稱為records_shoppingcarts聯接表連接。 我在record_amount表中添加了一個名為record_amount的關系屬性,該屬性應該保存record_amount表中每條記錄的數量。 目前,每當將一項商品添加到購物車時,只會添加一項。 然后,用戶可以在其結帳視圖中修改購物車中的商品數量。 我正在通過查詢聯接表records_shoppingcarts中具有相應record_id的條目,並將record_amount列更新為record_amount中新的記錄數量來處理此問題。 看起來有些聯系:

List<RecordsShoppingcarts> associations = RecordsShoppingcarts.where("shoppingcart_id = ?", s.get("id"));

            //update the number of records in the join table
            for(RecordsShoppingcarts rs : associations) {                    

                if((int)rs.getInteger("record_id") == (int)rec.getInteger("id")) {
                    rs.delete(); //cleanup
                    rs.set("record_amount", amount);
                    rs.saveIt();                        

                }
            }                
        }

不幸的是,每當saveIt()時; 該條目不會在數據庫中更新,而是使用相同的shoppingcart_idrecordId和更新的金額創建一個新條目。 我可能在這里丟失了一些東西,因為我無法想象要手動更新聯接表。 但是,不幸的是,在更新聯接表中的關系屬性時,我找不到任何東西。 這甚至是ActiveJdbc提供的嗎?

任何幫助將非常感激。 最好的祝福,derelektrischemoench

該框架完全按預期工作。 您需要通過閱讀以下頁面來熟悉如何決定創建新記錄或更新現有記錄: http : //javalite.io/surrogate_primary_keys

基本上,您將通過以下方式刪除記錄:

 rs.delete();

因此,下次您執行以下操作:

rs.saveIt();   

它創建一個新記錄。 只需刪除rs.delete(); 你會沒事的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM