簡體   English   中英

復合主鍵和外鍵jpa

[英]Composite Primary and foreign key jpa

我有兩張桌子T1和T2。 T1有id(PK),名稱,類型。 T2有SID,TID,Type。 T2的主鍵是所有3的組合:SID,TID,Type。 現在SID和TID也是映射到T1的ID的外鍵。 有人請幫助如何在JPA中做到這一點。

package com.sap.table;

import java.io.Serializable;
import java.lang.String;
import javax.persistence.*;

import static javax.persistence.GenerationType.TABLE;
import static javax.persistence.GenerationType.IDENTITY;

/**
 * Entity implementation class for Entity: Relations
 *
 */
@IdClass(RelationsPK.class)
@Entity
@Table (name = "demo_relations11")


public class Relations implements Serializable {


    //@EmbeddedId
    //@JoinColumn(referencedColumnName="AssetID")
//private RelationsPK Relations_PK;
//  @Id
////    @JoinColumn(referencedColumnName="AssetID")
//  private String TargetID;
@Id
private String Type;
private static final long serialVersionUID = 1L;

//    @MapsId("SourceID")
@Id
@ManyToOne(targetEntity=Asset.class)

@JoinColumns({
    @JoinColumn(name="SourceID", referencedColumnName="AssetID"),
    @JoinColumn(name="TargetID", referencedColumnName="AssetID")
})
//@JoinColumn(referencedColumnName="AssetID") 

Asset asset;



public Asset getAsset() {
    return asset;
}
public void setAsset(Asset asset) {
    this.asset = asset;
}
public Relations() {
    super();  
}   
//  public String getSourceID() {
//      return this.SourceID;
//  }
//
//  public void setSourceID(String SourceID) {
//      this.SourceID = SourceID;
//  }   
//  public String getTargetID() {
//      return this.TargetID;
//  }
//
//  public void setTargetID(String TargetID) {
//      this.TargetID = TargetID;
//  }   
public String getType() {
    return this.Type;
}

public void setType(String Type) {
    this.Type = Type;
}

}

T1 - ID(PK),名稱,類型T2 - SID(FK到ID),TID(FK到ID),T2的類型PK - SID,TID,類型

我找到了解決方案。 首先,我使用了@IdClass表示法。 這是主鍵的另一個類。 然后使用@Id在我的類中進行注釋以進行注釋。 我也用過

  @JoinColumn(name = "")
  @ManyToOne(targetEntity = parent_class)

我對引用父表的所有主鍵使用了上述注釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM