[英]How to map a foreign key with hibernate?
I am writing an online store using Spring Boot
( MVC
) and hiberbate
.我正在使用
Spring Boot
( MVC
) 和hiberbate
编写在线商店。 I have an order class where I need a Сart
link.我有一个订单 class 我需要
Сart
链接。 But the problem is that in the database I do not have a specific Сart
table, but there is a cart _products
table, where the peimary key
consists of two columns (as shown in the picture below.).但问题是在数据库中我没有特定的
Сart
表,但是有一个cart _products
表,其中peimary key
由两列组成(如下图所示)。 I really need a connection in the Order
class, so I decided to make a Composite Primary Key
at the hibernate level (and I seem to have done it), but I can't figure out what to do next.我真的需要一个
Order
class 的连接,所以我决定在 hibernate 级别创建一个Composite Primary Key
(我似乎已经做到了),但我不知道下一步该做什么。 I am stuck?我被卡住了? Please tell me where to go?
请告诉我 go 在哪里? How can I solve my problem?
我该如何解决我的问题?
OrderClass:订单类别:
@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;
}
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;
}
If you need access to the 'DRINKS' for that order.如果您需要访问该订单的“饮料”。 You need to change the relation to Cart from the Order class.
您需要从 Order class 更改与 Cart 的关系。
You have commented a relationship where ORDER just have access to one CART, since you need to access N CARTS (One to Many) you need to add a SET.您已经评论了 ORDER 只能访问一个 CART 的关系,因为您需要访问 N CARTS(一对多),您需要添加一个 SET。 Something like this:
像这样的东西:
@OneToMany
@JoinColumn(name = "cart_products_pkey")
private Set<Cart> cartProducts;
Now the ORDER has a SET of CART.现在订单有一组购物车。
You can easily access to the CARTS of that ORDER with order.getCartProducts()
您可以使用
order.getCartProducts()
轻松访问该订单的购物车
And since CART has a key to DRINK, you can easily access it.由于 CART 有 DRINK 的密钥,因此您可以轻松访问它。
Hope this can help you.希望这可以帮到你。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.