gpt4 book ai didi

java - Hibernate 一对多和多对一关系

转载 作者:行者123 更新时间:2023-12-02 05:10:48 26 4
gpt4 key购买 nike

这两个问题回答了我的很多问题,但我仍然很难在现实场景中思考!

从引用文献中举一个例子。假设我有一个订单和与其关联的多个项目。现在假设一件商品可以有一个返回,但一件返回可以有多个商品。

我的理解是,订单到项目将是一对多关系。由于我需要获取商品的订单,因此我将在商品表中创建列“order_fk”来获取它。

//Order entity
@OneToMany
@JoinColumn(name = "order_fk")
private List<Items> items;

//item entity
@Column(name = "order_fk")
private Long orderId;

返回项目是一对多映射。一份返回可以有多个项目。但一个 Item 只能有一个 return id

//Return entity
@OneToMany
@JoinColumn(name = "return_fk")
private List<Items> items;

//item entity
@Column(name = "return_fk")
private Long returnId;

我的思考方向正确吗?请让我理解这种关系和单向/双向关系。

总的来说,我应该获得订单的元素。获取给定商品的 Orderid。获取返回商品并获取给定商品的 returnId。

引用:

  1. Difference Between One-to-Many, Many-to-One and Many-to-Many? Hibernate/JPA ManyToOne vs OneToMany

最佳答案

这应该是实体的正确映射(数据库表和列都可以)

//Order entity
@OneToMany(mappedBy = "order", cascade = CascadeType.ALL)
private List<Items> items;

//item entity
@ManyToOne
@Column(name = "order_fk")
private Order order;

//Return entity
@OneToMany(mappedBy = "return")
private List<Items> items;

//item entity
@ManyToOne
@Column(name = "return_fk")
private Return return;
第一个映射中的

cascade = CascadeType.ALL 意味着每当您保存/更新/删除订单时,其项目也会被保存/更新/删除,因此在其他映射上根据您的需要进行调整也是如此。

单向关系意味着关系中只有一侧知道另一侧。在您的示例中,如果您从 Return 实体中删除了 items,则 ItemReturn 之间将具有单向关系。存在 items 后,您就拥有了双向关系。

关于java - Hibernate 一对多和多对一关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27354583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com