繁体   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