gpt4 book ai didi

java - 复合主键和外键 jpa

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:08:35 33 4
gpt4 key购买 nike

我有两个表 T1 和 T2。 T1 有 id(PK)、名称、类型。 T2有SID、TID、Type。 T2 的主键是所有 3 个的组合:SID、TID、类型。现在 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)

我对所有引用父表的主键都使用了上面的注释。

关于java - 复合主键和外键 jpa,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17414569/

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