我有一个ShoppingCart
其中有一套CartItem
对象。当我保存购物车时,所有cartitems也被保存。当买家确认购买时,我需要清除购物车。如果我现在将购物车保存到数据库,那么已经保存在数据库中并与购物车相关联的cartitems应该发生什么变化?我应该从db中删除它们吗?如何清除购物车中的cartitems
实体的JPA映射是
@Entity
class ShoppingCart{
...
@OneToOne
public Buyer buyer;
@OneToMany(mappedBy="cart", cascade=CascadeType.ALL)
public Set<CartItem> cartItems;
...
}
@Entity
public class CartItem{
@ManyToOne
public ShoppingCart cart;
@OneToOne
public Product pdt;
public int quantity;
...
}
}
在分贝购物车表
id | buyer_id
-----+-------------
100 | 50
cartitem表可以
id | quantity | product_id | cart_id
-----+----------+------------+---------
12 | 2 | 234 | 100
--------------------------------------
13 | 4 | 231 | 100
所以之后我清空购物车,并将其保存到分贝,如果这些项目仍然在分贝,这将意味着cartitem 12仍然指购物车100.但是,购物车与id = 100,因为我清除了它们,所以没有cartitems。 那么,清理购物车并将其保存到db相当于删除购物车? 如何映射这种行为?或者我的思想存在缺陷?
检查您的JPA提供程序是否支持像Hibernate“delete-orphan”这样的东西,因为JPA不提供这样的东西。 – Augusto
为什么你需要保存购物车?它可以在不同的会话中重用吗? – jasalguero
我假设任何时候应用程序中的购物车状态应该与其状态相同 – jimgardener