首页 > 解决方案 > Spring JPA 关系与来自另一个关系的外键

问题描述

我正在尝试使用 JPA 在 Springboot 上实现一个小型数据库 shema,但不知道如何定义两个实体之间的关系,其中部分外键来自另一个实体。

这是数据库架构:

数据库模式

我有一个Store实体,就是销售Products。多家商店销售相同的产品(实体之间存在多对多关系,未在模式上绘制以保持简单)。

对于交付,每个商店与其选择的供应商签订合同,同一供应商可以为不同的商店工作。另一个实体,Supplier存储每个供应商和产品的运输条件,并通过多对一关系Store链接到。Supplier

最后一个实体 Order 表示给定商店中给定产品的订单。与关系Order相关Store和关系也是如此。所有这些都在起作用。ProductManyToOne

当我想要与实体Order相关时它会得到Shipping:有一个外键Order.productId,但另一个Order.store.supplierId。我需要通过关系Order->Store来获取外键的值。如何使用 JPA 完成?

这是Order实体:

public class Order {

    @Id
    private Integer orderId;
    
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="productId", referencedColumnName="productId")
    private Product product;
    
    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name="productId", referencedColumnName="productId")
    private Product product;
    
    @Column(name="quantity")
    private Integer quantity;
    
    // What should I put here ???
    private Shipping shipping;
    
}
    

我怎样才能Order.supplier被 JPA 获取?

标签: javaspringjpaforeign-keys

解决方案


推荐阅读