[英]How to map a foreign key with hibernate?
我正在使用Spring Boot
( MVC
) 和hiberbate
编写在线商店。 我有一个订单 class 我需要Сart
链接。 但问题是在数据库中我没有特定的Сart
表,但是有一个cart _products
表,其中peimary key
由两列组成(如下图所示)。 我真的需要一个Order
class 的连接,所以我决定在 hibernate 级别创建一个Composite Primary Key
(我似乎已经做到了),但我不知道下一步该做什么。 我被卡住了? 请告诉我 go 在哪里? 我该如何解决我的问题?
订单类别:
@Entity
@Table(name = "pg_order")
public class Order {
// Fields
//
private @Id
@GeneratedValue
Long id;
private String address;
@Column(name = "phone_number")
private String phoneNumber;
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "date_order")
private Date dateOrder;
@Enumerated(EnumType.STRING)
@Column(name = "order_status")
private OrderStatus orderStatus;
@Column(name = "total_cost")
private BigDecimal totalCost;
// Relationships
//
@ManyToOne
@JoinColumn(name = "user_id")
private User user;
// @OneToMany
// @JoinColumn(name = "cart_products_pkey")
// private Cart cart;
}
大车:
@Entity
@Table(name = "cart_products")
public class Cart {
@Embeddable
@NoArgsConstructor
@AllArgsConstructor
static class CartId implements Serializable {
private Long orderId;
private Long drinkId;
}
// Fields
//
@EmbeddedId
private CartId cartId;
@ManyToOne(optional = false)
@JoinColumn(name = "order_id")
private Order order;
@ManyToOne(optional = false)
@JoinColumn(name = "drink_id")
private Drink drink;
private int count;
}
如果您需要访问该订单的“饮料”。 您需要从 Order class 更改与 Cart 的关系。
您已经评论了 ORDER 只能访问一个 CART 的关系,因为您需要访问 N CARTS(一对多),您需要添加一个 SET。 像这样的东西:
@OneToMany
@JoinColumn(name = "cart_products_pkey")
private Set<Cart> cartProducts;
现在订单有一组购物车。
您可以使用order.getCartProducts()
轻松访问该订单的购物车
由于 CART 有 DRINK 的密钥,因此您可以轻松访问它。
希望这可以帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.