gpt4 book ai didi

java - 如何使用 JPA 表示 Map 关系?

转载 作者:行者123 更新时间:2023-12-02 11:47:53 27 4
gpt4 key购买 nike

我有一个Order实体,以及 Product实体。一个订单可能有多对,代表产品和销售数量。 JPA 中合适的关系是什么来表示它?

(到目前为止,我只找到了将 EntityA 集合与 EntityB 关联起来的方法。例如 EntityA 包含 List<EntityB> 。)

最佳答案

如果该关联的数量已足够,则无需从 Product 导航→ Order ,您可以考虑Integer quantity作为元素集合并执行以下操作 - Product保持不变:

public class Order {
@ElementCollection // 1
@CollectionTable(name="ORDER_PRODUCT_QTY") // 2
@MapKeyJoinColumn(name="PRODUCT_ID") // 3
@Column(name="QUANTITY") // 4
private Map<Product, Integer> quantities;
}
  1. 它是基本类型(表示数量的整数)的集合,由实体作为键控
  2. 它是多值的,因此需要一个单独的表;您可以选择指定其名称
  3. 单独的集合表将包含指向 Order 的列。实体,指向 Product 的列以及数量值本身的列。这使您可以设置引用 Product 的 FK 名称。表并且是可选的。
  4. 这允许您指定保存数量值的列的名称。也是可选的。

如果您有理由相信这还不够,那么您可能需要创建一个代表关联的不同实体,例如:

OrderOrderItemProduct

Order有很多OrderItem s,Product有很多OrderItem s,Order有很多Product间接通过OrderItem , Product可以在很多Order中找到s,间接通过OrderItem数量在 OrderItem 。将这种“与值的关系”表示为实体比集合映射更灵活。

关于java - 如何使用 JPA 表示 Map<EntityType, Integer> 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48071177/

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