使用@IdClass创建联合主键,并实现外部关联

使用@IdClass创建联合主键,并实现外部关联 在 Java Persistence API(JPA)中,联合主键是指由多个字段组成的主键,可以使用@IdClass注解来实现。在本文中,我们将介绍如何使用@IdClass创建联合主键,并实现外部关联。 我们需要创建三个实体类:DataCenter、Build和Device。DataCenter实体类对应数据中心表,Build实体类对应建筑表,Device实体类对应设备表。 在DataCenter实体类中,我们使用@Id注解来标注centerID字段为主键。 ```java @XmlRootElement @Entity @Table(name = "datacenter") public class DataCenter { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long centerID; private String centerName; // getter and setter } ``` 接下来,我们需要创建Build实体类。在Build实体类中,我们使用@IdClass注解来标注联合主键。联合主键由buildID和centerID两个字段组成。 我们需要创建一个BuildUnionPkId类,实现Serializable接口,并重写hashCode和equals方法。 ```java public class BuildUnionPkId implements Serializable { private static final long serialVersionUID = 8275037592609082750L; private String buildID; private DataCenter dataCenter; // getter and setter @Override public int hashCode() { return super.hashCode(); } @Override public boolean equals(Object obj) { return ((obj instanceof BuildUnionPkId) && buildID.equals(((BuildUnionPkId) obj).getBuildID()) && ((BuildUnionPkId) obj).getDataCenter() instanceof DataCenter); } } ``` 然后,我们可以创建Build实体类,并使用@IdClass注解引入BuildUnionPkId类。 ```java @XmlRootElement @Entity @Table(name = "build") @IdClass(BuildUnionPkId.class) public class Build { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long buildID; @Id @ManyToOne @JoinColumn(name = "centerID", referencedColumnName = "centerID") private DataCenter dataCenter; // getter and setter } ``` 现在,我们可以增加一条记录测试,注意要先增加数据中心,然后增加建筑。 我们可以创建Device实体类,并使用@ManyToOne注解来关联Build实体类。 ```java @XmlRootElement @Entity @Table(name = "device") public class Device { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private long deviceID; @ManyToOne @JoinColumns({ @JoinColumn(name = "buildID", referencedColumnName = "buildID"), @JoinColumn(name = "centerID", referencedColumnName = "centerID") }) private Build build; // getter and setter } ``` 这样,我们就可以使用@IdClass创建联合主键,并实现外部关联。 在实际应用中,我们可以根据需要灵活地使用@IdClass注解来创建联合主键,并实现复杂的业务逻辑。





















- 300002018-11-06很有学习价值的文档,感谢.
- Softfei2015-08-29程序范例,对学习有帮助。

- 粉丝: 1
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 中国建设银行电子商务金融服务平台商城账户操作手册.doc
- 酒水行业网络营销.doc
- 网络营销规划书.docx
- 计算机局域网工作组无法访问无法共享资源解决方案.doc
- 最新国家开放大学电大《机电一体化系统》网络核心课形考网考作业及答案.pdf
- 校园网网站建设经验谈.docx
- 项目八网络营销效果评价.ppt
- 项目管理施工队伍进场沟通协调对接交底.doc
- 中医体质软件流程演示.ppt
- 电子商务基础知识.pptx
- 佛山电台制播系统集成及附属设备的主要技术参数:.pdf
- 企业网络安全综合设计方案.pptx
- 网络宣传推广方案制作.doc
- 面向Oracle8数据库系统知识.pptx
- 机床仿真软件VERICUT说明书.ppt
- 基于单片机的红外遥控小车设计.doc


