[英]How do I map cart-cartItem-item entities with JPA using Spring annotations?
我是 JPA 和表关系的初学者,我看过一些教程并认为以下内容是正确的(?)。 但是,如果看起来正确的话,如果更有经验的人看看下面的内容,我将不胜感激。
我有一个购物车、CartItem 和一个商品 class。一个购物车可以有很多 CartItem。 一个 CartItem 可以有一个 Item,也可以是一个 Cart 的一部分。 一个项目可以在许多 CartItems 中。
我正在尝试正确处理表之间的关系,但我希望得到一些帮助,因为它似乎不起作用。 我收到错误无法调用“java.util.List.iterator()”,因为“...Cart.getItems()”的返回值是 null。我假设这是因为我已经建立了关系我的表不正确?
大车:
@Entity
@Table(name="my_cart")
public class Cart {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="cart_id")
private String cartId;
@OneToMany(targetEntity = CartItem.class, cascade = CascadeType.ALL)
@JoinColumn(name="cart_item_foreign_key")
@Column(name="cart_items")
private List<CartItem> cartItems;
@Column(name="cart_total_number_of_items")
private long totalNumberOfItems;
@Column(name="cart_total_price")
private double totalPrice;
// + getters and setters and constructor
购物车:
@Entity
@Table(name="cart_items")
public class CartItem {
@Id
@Column(name="cartitem_id")
private String itemId;
@Column(name="cart_item_name")
private String productName;
@Column(name="cart_item_description")
private String itemDescription;
@Column(name="cart_item_quantity")
private int itemQuantity;
@Column(name="cart_item_price")
private double itemPrice;
@ManyToOne
Cart cart;
@OneToOne
private Item product;
物品:
@Entity
@Table(name="my_items")
public class Item {
@Id
@Column(name="item_id")
private String itemId;
@Column(name="item_name", nullable = false)
private String name;
@Column(name="item_description", nullable = false)
private String description;
@Column(name="item_price", nullable = false)
private Double price;
@OneToOne(mappedBy = "item")
CartItem cartItem;
有更多经验的人可以用上面的表格关系为我指明正确的方向吗? 谢谢
在Cart class中,使用@JoinColumn时,可以省略@Column,@ JoinColumn中有一个name属性,就是列名。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.