休眠一对多和多对一的关系 [英] Hibernate One to Many and Many to One Relation
问题描述
这两个问题回答了我的许多问题,但我仍然在努力思考真实情况!
以参考文献为例。
假设我有一个订单和与其关联的多个项目。
现在假设一个项目可以有一个返回,但是一个返回可以有多个项目。
我的理解是, Order to Items将成为一对多关系
。
因为我需要得到一个物品的订单,所以我会在Item表中创建一个'order_fk'列来获取它。
// Order entity
@OneToMany
@JoinColumn(name =order_fk)
private List< Items>项目;
//物品实体
@Column(name =order_fk)
private Long orderId;
返回项目是一对多映射。一个返回可以有多个项目。但一个项目只能有一个返回ID
//返回实体
@OneToMany
@JoinColumn(name =return_fk)
private List< Items>项目;
//项目实体
@Column(name =return_fk)
private Long returnId;
我的方向是否正确?请让我理解这种关系和单向/双向关系。总的来说,我应该得到订单的物品。获取给定项目的Orderid。获取退货商品并获得给定商品的退货标识。
参考:
- 一对多之间的区别,多对一和多对多?
Hibernate / hibernate / JPA ManyToOne vs OneToMany
这应该是实体的正确映射(数据库表和列都可以)
//订单实体
@OneToMany(mappedBy =order,cascade = CascadeType.ALL)
私人列表<项目>项目;
//物品实体
@ManyToOne
@Column(name =order_fk)
私人订单;
//返回实体
@OneToMany(mappedBy =return)$ b $ b private List< Items>项目;
//项目实体
@ManyToOne
@Column(name =return_fk)
private返回返回;
cascade = CascadeType.ALL
意味着每当您保存/更新/删除订单时,其项目也将被保存/更新/删除,因此根据您的需要在其他映射中进行调整。
单向关系意味着关系只有一方意识到另一方。在你的例子中,如果你从 These two questions answered many of my questions, but I am still struggling to think about in real scenario! Taking an example from the references.
Assume I have one Order and Multiple Items associated with it.
Now assume One Item can have one Returns but one Returns can have multiple Items. What I understood is, Am I thinking in the right direction? Please make me understand this relations and uni/bi-directional relationships. Overall, I should get Items for an Order. Get Orderid of given Item. Get Items of Returns and get returnId of given Item. Reference:
This should be the correct mapping of the entities (database tables and columns are ok) Unidirectional relations mean only one side of the relation is aware of the other side. On your examples, if you removed 这篇关于休眠一对多和多对一的关系的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋! Return
实体中删除了 items ,你将在
项目
和返回
。有项目
目前,您有双向关系。 Order to Items will be One to Many Relation
.
Since I need to get Order of an Item, I will create column 'order_fk' in Item table to get it.//Order entity
@OneToMany
@JoinColumn(name = "order_fk")
private List<Items> items;
//item entity
@Column(name = "order_fk")
private Long orderId;
Return to Items is One to Many mapping. One Return can have multiple Items. But one Item can have only one return id
//Return entity
@OneToMany
@JoinColumn(name = "return_fk")
private List<Items> items;
//item entity
@Column(name = "return_fk")
private Long returnId;
//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
in first mapping means whenever you save/update/delete an order, its items will also be saved/updated/deleted, so adjust it to your needs, on other mapping as well.items
from Return
entity you would have an unidirectional relation between Item
and Return
. With items
present, you have a bidirectional relation.