当前位置: 首页 > 知识库问答 >
问题:

Hibernate:复合主键-外键:单个字段如何在两个表之间映射

马阳晖
2023-03-14

我试图理解hibernate中两个实体之间的一个映射,同时还有一个条件,即主键(以及外键)必须是复合的。

@Embeddable
public class UserID  implements Serializable {

    private static final long serialVersionUID = 1L;
    private int ssnID;
    private int uniqueNum;
    // getters and setters..
}
@Embeddable
public class VehicleID implements Serializable {
    private int vehicleID;
    private int regNum;
    // getters and setters
}
@Entity
public class Vehicle {

    @EmbeddedId
    private VehicleID vehicleID;
    private String description;
    // getters and setters..
}
@Entity
public class UserInfo {
    private String full_name;
    @EmbeddedId
    UserID userID;

    @OneToOne(cascade=CascadeType.ALL)
    @JoinColumns({@JoinColumn(name="XYZ_ID") , @JoinColumn(name="ABC_Num")})
    Vehicle veh;

    // getters, setters and other code
}

Hibernate:删除表UserInfo(如果存在)

Hibernate:alter table UserInfo add constraint FKlbuhulsmr2lghirdvem61b9lb外键(XYZ_ID,ABC_Num)引用车辆

简而言之,userinfo是拥有方实体,并且与vehicle实体(以composite VehicleID作为主键)具有OneToOne关系。

userinfo实体中,我们指定OneToOne关系(和注释):

@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({@JoinColumn(name="XYZ_ID") , @JoinColumn(name="ABC_Num")})
Vehicle veh;

上面可以看到,在userinfo表中,我们在vehicle表上有一个复合外键,并且joincolumn的名称指定为xyz_idabc_num

我的疑问是xyz_idabc_num对应于vehicle表中的哪些字段?

有谁能帮我理解这一点吗?

共有1个答案

谈萧迟
2023-03-14

到Vehical主键(ssnID,uniqueNum)

 类似资料:
  • 问题内容: 我在这里搜索,但未找到任何类似的主题,因此我发布了一个新问题。 我正在使用现有数据库上的Hibernate。我们不允许更改表的结构和数据。该应用程序正在从数据库读取数据,并根据某种逻辑迁移到另一个数据存储。 现在的问题是关于复合PK映射。例如 表A具有复合PK。 表B也有一个复合PK,此复合PK的一部分是A的PK,此处也用作FK。 我尝试了几种方法,但都无济于事。谁能告诉一个有效的Hi

  • 我在jpa/Hibernate中映射复合键时遇到了问题。父实体和子实体都具有复合主键。 在运行时保存它时会出现以下异常: 我认为这是虚假的,因为有getter和setter。如果在priceRequestLegModel上使用mappedby=“leg”,在allocationModel上使用@mapsid,也会出现同样的错误。有人能指出我在这里做错了什么吗?

  • 问题内容: 我有一个类似的问题,如下所示,但解决方案无法解决我的问题。 休眠复合主键包含复合外键,如何映射 我正在尝试加入2个表,每个表都有一个带有部分外键引用的复合主键。 在一个: 在BPK中: 上面的方法给我这个异常: 你能帮忙吗? 问题答案: 假设f1和F2唯一标识A并存在于APK中,则可以通过几种方式使用JPA 2.0的派生ID。最容易显示的是: 这里的关键点是B对A的引用控制了外键字段f

  • 问题内容: 我有一个类似的问题,如下所示,但解决方案无法解决我的问题。 休眠复合主键包含复合外键,如何映射 我正在尝试加入2个表,每个表都有一个带有部分外键引用的复合主键。 在一个: 在BPK中: 上面的方法给我这个异常: 你能帮忙吗? 问题答案: 假设f1和F2唯一标识A并存在于APK中,则可以通过几种方式使用JPA 2.0的派生ID。最容易显示的是: 这里的关键点是B对A的引用控制了外键字段f

  • 我有一个类似的问题如下,但解决方案没有解决我的问题。 hibernate复合主键包含复合外键,如何映射此 我试图连接2个表,每个表都有一个复合主键和部分外键引用。 你能帮忙吗?