我正在通过一些例子学习jpa,涉及购物车和购物车物品。我将它们定义如下..但不太确定要使用哪个映射
@Entity
class Product{
private Long id;
private String name;
...
}
@Entity
class CartItem{
private Long id;
private Product product;
private int quantity;
...
}
@Entity
class ShoppingCart{
private Long id;
@OneToMany
private Set<CartItem> cartItems;
...
}
我不太确定的是如何将它们之间联系起来Product and CartItem
以及如何设置mappedBy
属性。有人可以告诉我该怎么做吗?这样做的标准是什么?我试图设置类似的东西1 cartitem contains 1 product only
.听起来像是一个OneToOne
关系。如果是这样,谁维持这种关系(这不是mappedBy
是吗?)。我也有类似的疑问ShoppingCart
and CartItem
s too
提前致谢
一件购物车商品引用一种产品。但单个产品被多个购物车项目引用。所以这是一个一对多的关联。
一个购物车作为多个商品,而一个商品是一个购物车的一部分,因此它也是一对多关联。
当您有双向 OneToMany 关联时,关联的所有者方始终是many边。协会的所有者一方是没有组织的一方mappedBy
属性。的确,mappedBy
means "我只是关联的另一端,它已经由以下属性映射”。注意关联的映射方式(连接列、连接表)必须只能在所有者端定义,其中mappedBy
属性不存在。
当您具有单向关联时,只有一个位置可以定义映射,因此永远不会使用mappedBy 属性。
因此,您的实体应该像这样映射:
@Entity
class Product{
private Long id;
private String name;
...
}
@Entity
class CartItem{
private Long id;
@ManyToOne
private Product product;
private int quantity;
...
}
@Entity
class ShoppingCart{
private Long id;
@OneToMany
private Set<CartItem> cartItems;
...
}
如果您希望购物车项目了解其所属的购物车,则您的关联将变为双向,并且实体将变为:
@Entity
class CartItem{
private Long id;
@ManyToOne
private Product product;
@ManyToOne
private ShppingCart shoppingCart;
private int quantity;
...
}
@Entity
class ShoppingCart{
private Long id;
@OneToMany(mappedBy = "shoppingCart")
private Set<CartItem> cartItems;
...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)