ActiveJdbc更新连接表属性

时间:2018-04-06 18:26:02

标签: java activejdbc

晚上好, 我正在尝试更新现有记录的join-table属性。我有两个模型,一个叫Records,另一个叫Shoppingcarts。它们通过名为records_shoppingcarts的连接表连接。我在一个名为record_amount的连接表中添加了一个关系属性,它应该保存连接表中每条记录的数量。 目前,只要将商品添加到购物车,就只会添加一个商品。然后,用户可以在结帐视图中修改购物车中的商品数量。我通过查询连接表records_shoppingcarts来查找具有相应record_id的条目并将列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

1 个答案:

答案 0 :(得分:1)

该框架完全按预期工作。您需要通过阅读此页面来熟悉它如何决定创建新记录或更新现有记录:http://javalite.io/surrogate_primary_keys

基本上,您要删除记录:

 rs.delete();

所以,下次你这样做:

rs.saveIt();   

它创建了一条新记录。只需删除rs.delete();即可。