gpt4 book ai didi

java - ActiveJdbc 更新连接表属性

转载 作者:行者123 更新时间:2023-12-02 11:24:49 24 4
gpt4 key购买 nike

晚上好,我正在尝试更新现有记录的连接表属性。我有两个模型,一个称为 Records,另一个称为 Shoppingcarts。它们通过名为 records_shoppingcarts 的连接表连接。我向连接表添加了一个名为 record_amount 的关系属性,该属性应该保存连接表中每条记录的数量。目前,每当将一件商品添加到购物车时,只会添加一件商品。然后,用户可以在结账 View 中修改购物车中的商品数量。我通过查询连接表 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

最佳答案

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

基本上,您通过以下方式删除记录:

 rs.delete();

所以,下次你这样做时:

rs.saveIt();   

它创建了一个新记录。只需删除 rs.delete();你会没事的。

关于java - ActiveJdbc 更新连接表属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49698959/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com