[英]Hibernate One to Many and Many to One Relation
这两个问题回答了我的许多问题,但我仍在努力思考真实的情况!
以参考文献为例。 假设我有一个订单和与其关联的多个项目。 现在假设一件物品可以有一个退货,但是一件物品可以有多个退货。
我了解的是, Order to Items will be One to Many Relation
。 由于我需要获取商品的订单,因此我将在商品表中创建列“ order_fk”来获取商品。
//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;
我在想正确的方向吗? 请让我理解这种关系和单向/双向关系。
总的来说,我应该为订单获取物品。 获取给定物品的Orderid。 获取退货商品并获取给定商品的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
意味着每当您保存/更新/删除订单时,其项目也将被保存/更新/删除,因此也可以在其他映射上根据您的需要进行调整。
单向关系意味着关系的只有一侧知道另一侧。 在示例中,如果从Return
实体中删除了items
,则Item
和Return
之间将具有单向关系。 在存在items
,您具有双向关系。
我认为您应该以另一种方式使用OneToMany:
// Order entity
@OneToMany(mappedBy = "columnInItemsPointingAtOrders")
private List<Items> items;
请检查文档: http : //docs.oracle.com/javaee/6/api/javax/persistence/OneToMany.html 。
还有一件事-您没有获得ID,而是实体:
//item entity
@Column(name = "order_fk")
private Order order;
我也是这个主题的新手。 帮助我理解这些关系的是绘制EER图,然后将其同步到测试数据库并进行实验。 这不能回答您的问题,但可以提供指导。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.