首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Hibernate:复合主键-外键:如何在两个表之间映射单个字段

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

Stack Overflow用户
提问于 2017-12-26 19:02:47
回答 1查看 672关注 0票数 1

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

UserID可嵌入类型:

代码语言:javascript
运行
复制
@Embeddable
public class UserID  implements Serializable {

    private static final long serialVersionUID = 1L;
    private int ssnID;
    private int uniqueNum;
    // getters and setters..
}

VehicleID可嵌入类型:

代码语言:javascript
运行
复制
@Embeddable
public class VehicleID implements Serializable {
    private int vehicleID;
    private int regNum;
    // getters and setters
}

具有组合主键VehicleID的车辆实体:

代码语言:javascript
运行
复制
@Entity
public class Vehicle {

    @EmbeddedId
    private VehicleID vehicleID;
    private String description;
    // getters and setters..
}

UserInfo实体具有复合原始密钥UserID,并且拥有UserInfo与车辆之间的OneToOne关系的侧实体:

代码语言:javascript
运行
复制
@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的SQL输出:

Hibernate:如果存在,则删除表UserInfo Hibernate:如果存在丢弃表车辆 Hibernate:创建表UserInfo (ssnID整数不为空,uniqueNum整数不为空,full_name varchar(255),XYZ_ID整数,ABC_Num整数,主键(ssnID,uniqueNum)) Hibernate:创建表载体(regNum整数null,vehicleID整数null,description (255),主键(regNum,vehicleID)) Hibernate: alter添加约束FKlbuhulsmr2lghirdvem61b9lb外键(XYZ_ID,ABC_Num)引用车辆

简而言之,UserInfo是拥有方实体,与Vehicle实体(以复合VehicleID作为主键)具有OneToOne关系。

我对此表示怀疑:

UserInfo实体中,我们指定了OneToOne关系(以及注释):

代码语言:javascript
运行
复制
@OneToOne(cascade=CascadeType.ALL)
@JoinColumns({@JoinColumn(name="XYZ_ID") , @JoinColumn(name="ABC_Num")})
Vehicle veh;

如上文所示,在UserInfo表中,Vehicle表上有一个复合外键,JoinColumn的名称指定为XYZ_IDABC_Num

我怀疑XYZ_IDABC_NumVehicle表中对应哪些字段?

有人能帮我理解这个吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-27 14:02:56

到主密钥(ssnID,uniqueNum)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47982668

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档