jon*_*ter 5 java mapping jpa relation
我正在通过一些示例来学习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;
...
}
Run Code Online (Sandbox Code Playgroud)
我不太确定的是,如何建立关系Product and CartItem以及如何设置mappedBy属性。有人可以告诉我该怎么做吗?执行此操作的条件是什么?我试图设置类似的内容。1 cartitem contains 1 product only这听起来像是一种OneToOne关系。如果是这样,谁保持关系(是不是mappedBy呢?)我也有类似的怀疑ShoppingCart和CartItem太
提前致谢
一件购物车商品引用一种产品。但单个产品被多个购物车项目引用。所以这是一个一对多的关联。
一个购物车作为多个商品,而一个商品是一个购物车的一部分,因此它也是一对多关联。
当您有双向 OneToMany 关联时,关联的所有者端始终是多端。关联的所有者一侧是没有mappedBy属性的一侧。事实上,mappedBy意味着“我只是关联的另一端,它已经由以下属性映射”。请注意,关联的映射方式(连接列、连接表)必须仅在属性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;
...
}
Run Code Online (Sandbox Code Playgroud)
如果您希望购物车项目了解其所属的购物车,则您的关联将变为双向,并且实体将变为:
@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;
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2407 次 |
| 最近记录: |