JPA之JPA中的联合主键
来源:互联网 发布:linux 禁止修改密码 编辑:程序博客网 时间:2024/06/05 11:47
如果要搭建JPA开发环境,请从JPA第一篇博客看起。
下面以坐飞机为例,讲解联合主键的使用。基本思想是一条航线由两个端点组成。
1、组合主键类
package compositepk;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Embeddable;/** * 组合主键类: 这里以坐飞机为例,一段航线由起始点和结束点组成 规则一:必须提供无参的构造函数 规则二:必须实现Serializable接口 * 规则三:必须重写hashCode()和equals()方法 */@Embeddable//该注解表示该类用在实体里面,直接使用该类定义的属性public class AirLinePK implements Serializable {private static final long serialVersionUID = 5913768452213218677L;private String startCity;private String endCity;public AirLinePK() {super();}public AirLinePK(String startCity, String endCity) {super();this.startCity = startCity;this.endCity = endCity;}@Column(length=3)public String getStartCity() {return startCity;}public void setStartCity(String startCity) {this.startCity = startCity;}@Column(length=3)public String getEndCity() {return endCity;}public void setEndCity(String endCity) {this.endCity = endCity;}@Overridepublic int hashCode() {final int prime = 31;int result = 1;result = prime * result + ((endCity == null) ? 0 : endCity.hashCode());result = prime * result+ ((startCity == null) ? 0 : startCity.hashCode());return result;}@Overridepublic boolean equals(Object obj) {if (this == obj)return true;if (obj == null)return false;if (getClass() != obj.getClass())return false;AirLinePK other = (AirLinePK) obj;if (endCity == null) {if (other.endCity != null)return false;} else if (!endCity.equals(other.endCity))return false;if (startCity == null) {if (other.startCity != null)return false;} else if (!startCity.equals(other.startCity))return false;return true;}}
2、航线类
package compositepk;import javax.persistence.Column;import javax.persistence.EmbeddedId;import javax.persistence.Entity;/** * 航线类 */@Entitypublic class AirLine {private AirLinePK id;//可嵌入主键private String name;public AirLine() {super();}public AirLine(AirLinePK id) {super();this.id = id;}public AirLine(String startCity, String endCity, String name){this.id = new AirLinePK(startCity, endCity);this.name = name;}//用于标识组合主键@EmbeddedIdpublic AirLinePK getId() {return id;}public void setId(AirLinePK id) {this.id = id;}@Column(length=20)public String getName() {return name;}public void setName(String name) {this.name = name;}}
3、测试类中的代码
package junit.test;import javax.persistence.EntityManager;import javax.persistence.EntityManagerFactory;import javax.persistence.Persistence;import org.junit.Test;import compositepk.AirLine;/** * 测试组合主键 */public class CompositTest {@Testpublic void save() {EntityManagerFactory factory = Persistence.createEntityManagerFactory("sunft_first");EntityManager em = factory.createEntityManager();em.getTransaction().begin();em.persist(new AirLine("PEK", "SHA", "北京飞上海"));em.getTransaction().commit();em.close();factory.close();}}
阅读全文
0 0
- JPA之JPA中的联合主键
- JPA中的联合主键详解
- JPA--联合主键
- JPA:联合主键
- JPA联合主键
- JPA 的联合主键
- 两个属性定义一个主键:JPA中的联合主键
- JPA联合主键的使用
- spring jpa使用联合主键
- JPA中的多对多和联合主键映射
- JPA/hibernate @joincolumns 联合主键关联
- JPA开发总结<六>--联合主键
- JPA联合主键并做从表外键
- JPA联合主键的使用(@EmbeddedId+@Embeddable)
- JPA复合主键另一种实现--联合约束
- JPA之JPA中的双向一对一关联
- JPA配置一对多双向并且外键中含联合主键
- jpa的联合主键,级联操作和延迟加载
- 加1乘2平方
- 通俗理解LSTM的内部门操作(个人理解,可能不科学)
- 深入理解 CPU 和异构计算芯片 GPU/FPGA/ASIC
- 素数环问题
- 希腊字母
- JPA之JPA中的联合主键
- unity之固定渲染管线
- 【Python基础】1.3.1 面向过程编程与面向对象编程(类)实例
- 常用汇编指令
- 通过文件选择框获取指定的目录路径
- Qt数据可视化:Qt Data Visualization 与 Qt Charts 简介
- java实现插入排序
- java中nextLine()和next()的区别
- maven 如何引入本地jar包