【问题标题】:Joining multiple tables using JPA @SecondaryTables使用 JPA @SecondaryTables 连接多个表
【发布时间】:2018-03-15 02:38:49
【问题描述】:

我需要使用 JPA @SecondaryTables 连接 3 个表,其中 A.id == B.id 和 B.id == C.id 我需要将这些表映射到单个实体。我应该尝试什么方法?

【问题讨论】:

    标签: sql hibernate jpa


    【解决方案1】:

    由于 A.ID = B.ID = C.ID,您只能有 2 个辅助表,关系为 A.ID = B.ID 和 A.ID = C.ID。您的“主”表将是 A,B 和 C 是您的辅助表。您可以在列声明中按如下方式引用该表。 (为简洁起见,注释中的许多其他参数都省略了)

    @Entity
    @Table(name = "A")
    @SecondaryTables({
      @SecondaryTable(name="B", @PrimaryKeyJoinColumn(name="ID", referencedColumnName="ID")),  
      @SecondaryTable(name="C",  @PrimaryKeyJoinColumn(name="ID", referencedColumnName="ID"))
    })
    public Claass Blah {
      @ID
      private int id;
    
      @Column(table = "B")
      private String someColumn;
    
      @Column(table = "C")
      private String someOtherColumn;
    
    etc...
    }
    

    【讨论】:

    • 我已经尝试过了,但 C.id 引用了 A.id。就像这样 A.id = B.id 和 A.id = C.id 我需要的是 A.id == B.id 和 B.id == C.id
    • 我不理解你。如果A.id = B.id,B.id = C.id,那么通过传递性,A.id = C.id
    • 是的,这是正确的,但我需要的是这样的 A.id = B.id 和 B.did = C.did 没有像 A.id = C.id 这样的关系
    • 我明白了,所以这两个关系的 id 是分开的?一定要上同一个班吗?如果没有,您可以创建 2 个类,其中一个具有辅助表,另一个与第一个具有 @OneToOne 关系。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-05
    • 1970-01-01
    相关资源
    最近更新 更多