【问题标题】:Springboot JPA Same foreign key in Three different similar tablesSpring Boot JPA 在三个不同的相似表中保存外键
【发布时间】:2023-04-08 08:25:02
【问题描述】:

我有 4 张桌子。一个表映射到 3 个相似的表。第一个表有一个复合主键,我想将其映射到三个表作为外键。三个子表中的所有字段都相同。

class Company{
    @Id
    private String companyId;
    @Id
    private String stateId;
    private String company Name;
}

class Managers{
    @Id
    private String id;
    //foreign key
    private String companyId;
    //foreign key
    private String stateId;
    private Int salary;
}

class SupportStaff{
    @Id
    private String id;
    //foreign key
    private String companyId;
    //foreign key
    private String stateId;
    private Int salary;
}

数据非常庞大,因为我一次按不同的规则检索一个值。我必须把它们分开。是否可以映射它并根据休息得到它?如果我想要一个经理列表,我想从 manager 表中检索,如果我想要支持人员的详细信息,我想从 SupportStaff 表中检索。

【问题讨论】:

  • 请确认我的理解是否正确,如果您为此实现创建了三个单独的模型,那么基于调用的模型只需要调用,就像调用 SupportStaff 一样,您需要的唯一模型对吗?
  • 如果这是您的要求,意味着在您的模型创建中使用 fetchtype LAZY 它只会在 getter 方法调用中获取数据
  • 一次,我将只从 1 个子表中获取记录
  • 然后你使用 JoinColumn 和 fetchType Lazy

标签: java spring-boot hibernate jpa


【解决方案1】:

据我了解,您应该根据您的用例添加映射注释

@OneToMany / @ManyToMany / 和其他你想要作为外键的列

在获取数据时,您将需要 JOIN 查询来获取数据

参考JPA join columnJPQL inner join

【讨论】:

  • 我的主表中有复合主键。我希望在关系为 oneToMany 的三个子表中与外键相同。如何在三个表中映射复合主键和外键
猜你喜欢
  • 2022-01-16
  • 2021-03-02
  • 2021-06-22
  • 2018-12-16
  • 1970-01-01
  • 2020-06-19
  • 1970-01-01
  • 2020-02-03
  • 1970-01-01
相关资源
最近更新 更多